9

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

 1 month ago
source link: https://www.51cto.com/article/785336.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

什么是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个步骤,分别是分词、建立倒排索引

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

content

深入理解Java核心技术

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

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

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

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

生成倒排索引

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

1,2,3

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK