Elasticsearch 架构
存储流程
ES 存储数据的流程可以从三个角度来阐述:
- 从集群的角度来看,数据写入会先路由到主分片,在主分片上写入成功后,会并发写副本分片,最后响应给客户端。
- 从分片的角度来看,数据到达分片后需要对内容进行格式校验、分词处理然后再索引数据。
- 从节点的角度来看,ES 数据持久化的步骤可归纳为:Refresh、写 Translog、Flush、Merge。
ES 存储数据的流程可以从三个角度来阐述:
Elasticsearch 支持多种搜索:
概述
Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。
如果我们启动了一个单独的节点,里面不包含任何的数据和索引,那我们的集群看起来就是一个包含空内容节点的集群。
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 常用的数据类型,以及如何在 Elasticsearch 中通过 Mapping 定义字段的数据类型。
概述
Elasticsearch 中存储的数据可以粗略分为:
Elasticsearch 文本分析是将非结构化文本转换为一组词项(term)的过程。本文将介绍 Elasticsearch 文本分析的各个关键组件,以及文本分析的处理流程。
概述
本文介绍了 Elasticsearch 的逻辑存储、物理存储,以及 Elasticsearch 的倒排索引设计。
Elasticsearch 是当前流行的企业级搜索引擎,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。作为一个开箱即用的产品,在生产环境上线之后,我们其实不一定能确保其的性能和稳定性。如何根据实际情况提高服务的性能,其实有很多技巧。这章我们分享从实战经验中总结出来的 elasticsearch 性能优化,主要从硬件配置优化、索引优化设置、查询方面优化、数据结构优化、集群架构优化等方面讲解。
升级硬件设备配置一直都是提高服务能力最快速有效的手段,在系统层面能够影响应用性能的一般包括三个因素:CPU、内存和 IO,可以从这三方面进行 ES 的性能优化工作。
概述
在数据库中,聚合是指将数据进行分组统计,得到一个汇总的结果。例如,计算总和、平均值、最大值或最小值等操作。
Elasticsearch 将聚合分为三类:
类型 | 说明 |
---|---|
Metric(指标聚合) | 根据字段值进行统计计算 |
Bucket(桶聚合) | 根据字段值、范围或其他条件进行分组 |
Pipeline(管道聚合) | 对其他聚合输出的结果进行再次聚合 |
本文将逐一介绍这几种聚合方式的用法和特性。