Elasticsearch 架构
存储流程
ES 存储数据的流程可以从三个角度来阐述:
- 从集群的角度来看,数据写入会先路由到主分片,在主分片上写入成功后,会并发写副本分片,最后响应给客户端。
- 从分片的角度来看,数据到达分片后需要对内容进行格式校验、分词处理然后再索引数据。
- 从节点的角度来看,ES 数据持久化的步骤可归纳为:Refresh、写 Translog、Flush、Merge。
ES 存储数据的流程可以从三个角度来阐述:
Elasticsearch 支持多种搜索:
Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。
Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。
Elastic 技术栈通常被用来作为日志采集、检索、可视化的解决方案。
ELK 是 elastic 公司旗下三款产品 Elasticsearch 、Logstash 、Kibana 的首字母组合。
Logstash 传输和处理你的日志、事务或其他数据。
Kibana 将 Elasticsearch 的数据分析并渲染为可视化的报表。
如果我们启动了一个单独的节点,里面不包含任何的数据和索引,那我们的集群看起来就是一个包含空内容节点的集群。
Figure 1. 包含空内容节点的集群
Elasticsearch 官方的 High Level REST Client 在 7.1.5.0 版本废弃。所以本文中的 API 不推荐使用。
在 pom.xml 中引入以下依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.1</version>
</dependency>
文本分析是将非结构化文本转换为针对搜索优化的结构化格式的过程。
文本分析使 Elasticsearch 能够执行全文搜索,其中搜索返回所有相关结果,而不仅仅是完全匹配。
文本分析可以分为两个方面:
foxes
标准化为 fox
。Elasticsearch 的逻辑存储被设计为层级结构,自上而下为:
index -> type -> mapping -> document -> field
Elasticsearch 是当前流行的企业级搜索引擎,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。作为一个开箱即用的产品,在生产环境上线之后,我们其实不一定能确保其的性能和稳定性。如何根据实际情况提高服务的性能,其实有很多技巧。这章我们分享从实战经验中总结出来的 elasticsearch 性能优化,主要从硬件配置优化、索引优化设置、查询方面优化、数据结构优化、集群架构优化等方面讲解。
升级硬件设备配置一直都是提高服务能力最快速有效的手段,在系统层面能够影响应用性能的一般包括三个因素:CPU、内存和 IO,可以从这三方面进行 ES 的性能优化工作。