跳至主要內容
Elasticsearch 架构

Elasticsearch 架构

存储流程

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

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

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

Elasticsearch 搜索(上)

搜索简介

Elasticsearch 支持多种搜索:

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

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

搜索引擎数据库

📖 内容

Elasticsearch

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


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

Elasticsearch 教程

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

📖 内容


钝悟...大约 1 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch
Elastic 技术栈

Elastic 技术栈

Elastic 技术栈通常被用来作为日志采集、检索、可视化的解决方案。

ELK 是 elastic 公司旗下三款产品 ElasticsearchLogstashKibana 的首字母组合。

Logstash 传输和处理你的日志、事务或其他数据。

Kibana 将 Elasticsearch 的数据分析并渲染为可视化的报表。

Elastic 技术栈,在 ELK 的基础上扩展了一些新的产品,如:BeatsX-Pack


钝悟...大约 1 分钟数据库搜索引擎数据库Elastic数据库搜索引擎数据库Elastic
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性能
2
3