Elasticsearch


# Elasticsearch

本系列以 Elasticsearch 7.x 作为安装版本进行知识点梳理,最早接触的是 5.x 版本,其跟 2.x 前后相差还是挺大的。但 5.x 往后的便很少有 breaking changes 了。

Elasticsearch 简介

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。除了搜索领域外,Elasticsearch 与 Kibana、Logstash 组成的 ELK 系统还可以应用到日志采集、分析、监控等领域。

一般大家都会把 Elasticsearch 简称为 ES,后面的内容大都会用这个简称(有特别说明的除外)。


Elasticsearch 优点

  • 可从数据中探寻各种问题的答案:通过 Elasticsearch 你能够执行及合并多种类型的搜索(结构化数据、非结构化数据、地理位置、指标),搜索方式随心而变。
  • 快到不可思议的速度:你可以用快到令人惊叹的速度使用和访问你所有的数据。
    • ES 可以提供秒级的近实时性的搜索,但至少是一秒,是因为refresh 操作默认 1s 执行一次,即新 insert 的 doc,默认在 1s 后才能被检索到。
    • 但在精度要求极高的一些需求里,我们可以在插入时手动强制 refresh。大部分情况下不建议,但碰到这种需求的场景下正好数据压力不大。
  • 高度的可扩展性:它能够水平扩展,每秒钟可处理海量事件,同时能够自动管理索引和查询在集群中的分布方式,以实现极其流畅的操作。
    • 在我们的实际项目中,使用了 16 个节点的 ES 集群以应对每秒 2w 条数据实时写入的压力。
  • 安全性和可靠性:Elasticsearch 可以为你检测到硬件、网络分区等故障,并确保你的集群和数据的安全性和可用性。通过跨集群复制功能,辅助集群可以作为热备份随时投入使用。

这个系列主要整理

  • 业务中解决搜索需求常用的 Elasticsearch DSL 语法。
  • Elasticsearch 集群运维、调优经验。
  • Elasticsearch 核心技术的实现原理。

关于 Elasticsearch 的知识点,可以参考:

  • 官方文档 (opens new window):这个非常重要,关于 API 使用的示例上面都有。早期网上没有那么多博客和教程的时候,很多复杂的聚合查询和计算指标的 DSL 语法,都能通过反复研读文档直接或间接摸索出来。
  • 《Elasticsearch 源码解析与优化实战》:基于 6.x 源码分析的书本。
  • Elasticsearch 权威指南 (opens new window):这个是官方的资料,不过内容是基于 2.x 版本的,部分内容已经过时了,现在走马观花地看看简介就行了。