ElasticSearch为什么快?你知道为什么吗?

云计算 云原生
在倒排索引构建过程中,首先是将文档原始内容分割为词项(Term)。Elasticsearch 默认采用标准分析器(Standard Analyzer)进行分词处理。

什么是ElasticSearch,为什么要使用ES

Elasticsearch,开源的分布式搜寻及分析引擎,主要适用于以下场景:

  1. 搜寻引擎:快速检索文档、商品、新闻等之应用。
  2. 日志分析:透过日志数据分析,帮助企业认知业务绩效状况。
  3. 数据分析:辅助数据科学家与分析师进行数据剖析,以取得珍贵信息。
  4. 商业智能:辅助企业制定数据导向决策,达成商业上之成功。
  5. 实时监控:协助企业实时监测系统绩效、监控数据变动,以确保系统正常运作。
  6. 安全性:资助企业确保数据安全,保障数据不受非法窃取。
  7. 应用程序开发:资助开发者开发基于搜寻之应用程序,提升用户体验。

Elasticsearch具备以下优势:

  1. 高性能:擅长搜索与分析,包含多种查询语言与数据构架。
  2. 可扩展性:分布式构架,透过增加节点数增强搜索与分析能力。
  3. 灵活性:支持多数据类型、多语言,动态映射、快速调整模型以应对不同需求。
  4. 近实时分析:支持近实时分析(NRT near real time),提供实时数据查询,有利于快速数据检索。
  5. 可靠性:具备可靠性和高可用性,支持数据备份与恢复。

ElasticSearch为什么快?

Elasticsearch乃一款高性能、分布式搜索引擎,其速之快者,缘由如下:

  1. 分布式储存:采用分布式储存技术,将数据存储于多节点,分散负载,优化整体执行效能。
  2. 索引分片:将每索引分裂为多片段,实现并行查询,提升搜索速度。
  3. 全文索引:运用高效全文索引技术,将文档转化为可搜索的结构化数据,快速高效地完成搜索操作。
  4. 倒排索引:支持倒排索引数据结构,映射文档中每个词汇至文档出现位置,当搜索请求发生时,能快速检索包含所有搜索词的文档,迅速返回结果。
  5. 索引优化:通过索引优化技术提高查询速度。支持索引覆盖、索引下推等优化技术,加速查询操作。
  6. 预存储结果:插入数据时,预处理数据,将结果预存储于索引中,查询时无需重新计算,提升查询速度。
  7. 高效查询引擎:采用高效查询引擎,支持各种查询类型,为复杂查询提供优化策略,提高查询速度。
  8. 异步请求处理:采用异步请求处理机制,在请求抵达时立即回馈,避免长时间等待,提升用户体验。
  9. 内存存储:应用内存存储技术,在数据读写中减少磁盘访问次数,提高数据存储与查询效率。

综上所述,Elasticsearch之所以这么快,由于其运用多项高效技术,提升数据存储、查询、处理效率,构筑快捷搜索体验。

倒排索引是什么?

在Elasticsearch中,倒排索引是一种常见的索引结构,用于快速搜索文档中的特定词汇。

与传统索引结构相反,倒排索引的构建方式不同。传统索引结构是以文档为基础,每个文档包含多个词汇,然后根据这些词汇建立索引。而倒排索引则以词汇为基础,每个词汇对应多个文档,然后根据这些文档建立索引。这种结构使得在搜索过程中能够快速定位包含目标词汇的文档,从而加速搜索效率。

对于一份含有多个词汇的文档,倒排索引将每个词汇视作一个关键字(Term),记录该词汇所属文档的编号(Document ID)以及在文档中的位置(Term Position)。这种方式使得当用户输入关键字时,能够迅速查找到包含该关键字的文档编号,再通过编号找到相应文档内容。

倒排索引的优势在于能迅速锁定含指定关键字的文档,同时支持复杂搜索操作,如词组搜索、通配符搜索等。此外,由于倒排索引以词汇为基础构建,因此在数据分析和统计方面也具备重要意义。在Elasticsearch中,倒排索引是一种至关重要的索引结构,广泛应用于搜索引擎、日志分析、推荐系统等领域。

倒排索引建立过程

ES中的倒排索引建立过程主要有2个步骤,分别是分词、建立倒排索引

比如我们现在有三份文档内容,分别是

id

content

1

深入理解Java核心技术

2

深入理解Java虚拟机—周志明

3

Java编程思想—布鲁斯·埃克尔

分词

在倒排索引构建过程中,首先是将文档原始内容分割为词项(Term)。Elasticsearch 默认采用标准分析器(Standard Analyzer)进行分词处理。

经过分词处理后,您提供的三份文档内容将包含诸如"深入"、"理解"、"Java"、"核心"、"技术"、"编程"、"思想"、"周志明"、"布鲁斯·埃克尔"等词语。

生成倒排索引

将分开的词,当做索引,与对应的文档ID进行关联,形成倒排表。

词条

文档ID

深入

1,2

理解

1,2

Java

1,2,3

虚拟机

2

核心

1

技术

1

编程

3

思想

3

在倒排表生成完毕后,常规操作是对倒排表进行压缩,以减少其空间占用。流行的压缩算法包括Variable Byte Encoding和Simple9等技术。最后,压缩后的倒排表将被存储在磁盘上,以确保日后的搜索过程能够迅速访问倒排表。

责任编辑:武晓燕 来源: 码上遇见你
相关推荐

2018-10-28 15:40:23

Python编程语言

2023-03-09 08:23:07

序列化​接口方法

2023-09-08 08:35:42

层叠样式表CSS

2023-11-02 10:22:29

gRPC后端通信

2023-06-26 08:20:02

openapi格式注解

2014-07-15 11:05:30

黑莓

2020-10-15 09:19:36

Elasticsear查询速度

2020-11-17 08:30:06

LinuxSwapping 设计

2020-04-16 11:19:55

深度学习神经网络网络层

2020-02-27 21:03:30

调度器架构效率

2019-12-09 10:29:04

Go语言开发互联网

2021-03-18 14:34:34

达达集团京东云电商

2020-02-27 15:44:41

Nginx服务器反向代理

2024-02-26 21:15:20

Kafka缓存参数

2023-06-08 18:25:40

Doris场景查询

2021-03-22 08:29:59

Elasticsear搜索系统

2021-12-13 01:40:29

ElasticSear倒排索引

2023-03-21 08:02:36

Redis6.0IO多线程

2020-03-30 15:05:46

Kafka消息数据

2021-06-09 09:32:58

Esbuild 工具前端
点赞
收藏

51CTO技术栈公众号