服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - ElasticSearch为什么快?你知道为什么吗?

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

2024-04-03 14:20码上遇见你 编程技术

在倒排索引构建过程中,首先是将文档原始内容分割为词项(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等技术。最后,压缩后的倒排表将被存储在磁盘上,以确保日后的搜索过程能够迅速访问倒排表。

原文地址:https://mp.weixin.qq.com/s/KxZeBQgSY8np1VE9hmXeyw

延伸 · 阅读

精彩推荐