跳至主要內容
Elasticsearch 架构

Elasticsearch 架构

存储流程

ES 存储数据的流程可以从三个角度来阐述:

  • 集群的角度来看,数据写入会先路由到主分片,在主分片上写入成功后,会并发写副本分片,最后响应给客户端。
  • 分片的角度来看,数据到达分片后需要对内容进行格式校验、分词处理然后再索引数据。
  • 节点的角度来看,ES 数据持久化的步骤可归纳为:Refresh、写 Translog、Flush、Merge。

钝悟...大约 13 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch存储索引
Elasticsearch 搜索(上)

Elasticsearch 搜索(上)

搜索简介

Elasticsearch 支持多种搜索:

  • 精确搜索(词项搜索):搜索数值、日期、IP 或字符串的精确值或范围。
  • 全文搜索:搜索非结构化文本数据并查找与查询项最匹配的文档。
  • 向量搜索:存储向量,并使用 ANN 或 KNN 搜索来查找相似的向量,从而支持 语义搜索 等场景。

钝悟...大约 8 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch搜索
Elasticsearch 教程

Elasticsearch 教程

Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。

📖 内容


钝悟...大约 1 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch
Elasticsearch 集群

Elasticsearch 集群

集群

空集群

如果我们启动了一个单独的节点,里面不包含任何的数据和索引,那我们的集群看起来就是一个包含空内容节点的集群。

Figure 1. 包含空内容节点的集群

包含空内容节点的集群
包含空内容节点的集群

钝悟...大约 30 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch集群分片
ElasticSearch API 之 HighLevelRestClient

ElasticSearch API 之 HighLevelRestClient

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>

钝悟...大约 4 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库ElasticsearchAPI
Elasticsearch 文本分析

Elasticsearch 文本分析

文本分析是将非结构化文本转换为针对搜索优化的结构化格式的过程。

文本分析简介

文本分析使 Elasticsearch 能够执行全文搜索,其中搜索返回所有相关结果,而不仅仅是完全匹配。

文本分析可以分为两个方面:

  • Tokenization(分词化) - 分析通过分词化使全文搜索成为可能:将文本分解成更小的块,称为分词。在大多数情况下,这些标记是单独的 term(词项)。
  • Normalizeation(标准化) - 经过分词后的文本只能进行词项匹配,但是无法进行同义词匹配。为解决这个问题,可以将文本进行标准化处理。例如:将 foxes 标准化为 fox

钝悟...大约 9 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch分词
Elasticsearch 存储

Elasticsearch 存储

逻辑存储设计

Elasticsearch 的逻辑存储被设计为层级结构,自上而下为:

index -> type -> mapping -> document -> field

钝悟...大约 23 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch存储索引
Elasticsearch 优化

Elasticsearch 优化

Elasticsearch 是当前流行的企业级搜索引擎,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。作为一个开箱即用的产品,在生产环境上线之后,我们其实不一定能确保其的性能和稳定性。如何根据实际情况提高服务的性能,其实有很多技巧。这章我们分享从实战经验中总结出来的 elasticsearch 性能优化,主要从硬件配置优化、索引优化设置、查询方面优化、数据结构优化、集群架构优化等方面讲解。

硬件配置优化

升级硬件设备配置一直都是提高服务能力最快速有效的手段,在系统层面能够影响应用性能的一般包括三个因素:CPU、内存和 IO,可以从这三方面进行 ES 的性能优化工作。


钝悟...大约 21 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch性能
Elasticsearch 聚合

Elasticsearch 聚合

聚合将数据汇总为指标、统计数据或其他分析。

Elasticsearch 将聚合分为三类:

类型 说明
Metric(指标聚合) 根据字段值进行统计计算
Bucket(桶聚合) 根据字段值、范围或其他条件进行分组
Pipeline(管道聚合) 根据其他聚合结果进行聚合

钝悟...大约 14 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch聚合指标管道
Elasticsearch 搜索(下)

Elasticsearch 搜索(下)

Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查询。

可以将 DSL 视为查询的 AST(抽象语法树),由两种类型的子句组成:

  • 叶子查询 - 在指定字段中查找特定值,例如:matchtermrange
  • 组合查询 - 组合其他叶子查询或组合查询,用于以逻辑方式组合多个查询(例如: booldis_max),或更改它们的行为(例如:constant_score)。

钝悟...大约 21 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch查询DSL
2