Elasticsearch倒排索引

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 【11月更文挑战第2天】

Elasticsearch 使用倒排索引作为其核心数据结构,以实现高效、快速的全文搜索能力。倒排索引是一种索引数据结构,它将文档中的内容映射到包含这些内容的文档列表上。这种方式与传统的关系数据库索引(正向索引)相反,后者是从文档到内容的映射。

倒排索引的基本概念

  • Term (词条): 分词后的单个词或短语。
  • Term Dictionary (词条字典): 所有词条的集合,通常会使用FST(有限状态转换器)等高效的数据结构来存储,以便快速查找。
  • Posting List (倒排列表): 每个词条对应的文档列表,记录了哪些文档包含该词条。

创建倒排索引的过程

  1. 分词: 将输入的文本(如文档内容)分割成多个词条。这个过程可能包括去除停用词(如“的”、“和”等常见但无实际意义的词)、词形还原(如将“running”还原为“run”)等步骤。
  2. 构建词条字典: 将所有词条收集起来,构建一个词条字典,确保每个词条都能快速定位。
  3. 构建倒排列表: 对于每个词条,记录下所有包含该词条的文档ID,形成倒排列表。

查询倒排索引的过程

  1. 解析查询: 对用户输入的查询进行分词,得到查询词条。
  2. 查找倒排列表: 根据查询词条,在词条字典中找到对应的倒排列表。
  3. 合并结果: 如果查询包含多个词条,则需要合并各个词条对应的倒排列表,找出共同出现的文档。
  4. 评分排序: 根据文档的相关性对结果进行评分,并按评分排序返回给用户。

特殊结构 - Doc Values

除了倒排索引外,Elasticsearch 还使用了 doc values 结构来优化排序和聚合操作。doc values 可以视为倒排索引的转置,即为每个字段创建一个从文档ID到字段值的映射,允许在不加载整个文档的情况下执行排序和聚合操作,从而提高性能。

总结

倒排索引是 Elasticsearch 实现高效搜索的关键技术之一。通过预先处理文档内容,构建词条字典和倒排列表,Elasticsearch 能够在海量数据中快速定位相关文档,满足实时搜索的需求。同时,通过诸如 doc values 等特殊结构的引入,Elasticsearch 还能有效支持排序和聚合等高级功能。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
6月前
|
存储 算法 搜索推荐
Elasticsearch 的倒排索引
Elasticsearch 的倒排索引
54 2
|
6月前
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 01】深入探索:Elasticsearch的正向索引和倒排索引是什么?
正向索引根据文档ID直接查找文档内容,适用于精确匹配场景;而倒排索引则基于文档内容构建,通过关键词快速定位相关文档,适用于全文搜索,显著提高查询效率,是搜索引擎的核心技术。
79 2
|
4月前
|
存储 缓存 自然语言处理
【Elasticsearch】Elasticsearch倒排索引详解
【Elasticsearch】Elasticsearch倒排索引详解
161 12
|
自然语言处理 搜索推荐 索引
分布式系列教程(31) -ElasticSearch倒排索引
分布式系列教程(31) -ElasticSearch倒排索引
93 0
|
6月前
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 06】深入探索:Elasticsearch如何处理倒排索引中的分词问题
Elasticsearch通过内置和可定制的分词器及过滤器处理倒排索引中的分词问题,确保文本被拆分成合适的词条并优化存储,为全文搜索等提供高效支持。用户可通过分析API测试和调整分词效果。
59 3
|
6月前
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 02】深入探索:Elasticsearch为什么使用倒排索引而不是正排索引
倒排索引在搜索引擎中更受欢迎,因为它直接关联文档内容,支持全文搜索和模糊搜索,提高查询效率。其紧凑的结构减少了存储空间,并方便支持多种查询操作。相比之下,正排索引在搜索效率、存储和灵活性方面存在局限。
51 1
|
6月前
|
存储 自然语言处理 搜索推荐
深入理解Elasticsearch倒排索引
深入理解Elasticsearch倒排索引
391 0
|
6月前
|
存储 缓存 自然语言处理
【Elasticsearch专栏 04】深入探索:Elasticsearch倒排索引中的词条是如何存储和管理
倒排索引中,词条以有序方式存储在词典中,关联倒排列表,记录文档ID和位置信息。词条的添加涉及分词、添加到词典和更新倒排列表。删除涉及从词典和倒排列表中移除词条。查询时,快速定位词条,获取倒排列表以定位相关文档。整个过程涉及高效的数据结构和优化策略。
157 0
|
6月前
|
自然语言处理 数据库 索引
02_ElasticSearch 倒排索引
02_ElasticSearch 倒排索引
60 0
|
存储 自然语言处理 前端开发
Elasticsearch倒排索引(一)简介
Elasticsearch倒排索引(一)简介
128 0