Elasticsearch倒排索引

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 【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 还能有效支持排序和聚合等高级功能。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
存储 算法 搜索推荐
Elasticsearch 的倒排索引
Elasticsearch 的倒排索引
131 2
|
存储 缓存 自然语言处理
【Elasticsearch专栏 05】深入探索:Elasticsearch在处理非结构化数据时,倒排索引有何优势
在处理非结构化数据时,倒排索引的优势在于其高效的查询性能,能够迅速匹配文本中的关键词,实现全文搜索。此外,倒排索引支持复杂的查询操作,可扩展性强,且通过压缩技术优化存储空间。这些特点使倒排索引成为处理非结构化数据的理想选择。
215 1
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 01】深入探索:Elasticsearch的正向索引和倒排索引是什么?
正向索引根据文档ID直接查找文档内容,适用于精确匹配场景;而倒排索引则基于文档内容构建,通过关键词快速定位相关文档,适用于全文搜索,显著提高查询效率,是搜索引擎的核心技术。
197 2
|
10月前
|
测试技术 API 开发工具
ElasticSearch核心概念:倒排索引
ElasticSearch核心概念:倒排索引
165 6
|
自然语言处理 搜索推荐 索引
分布式系列教程(31) -ElasticSearch倒排索引
分布式系列教程(31) -ElasticSearch倒排索引
148 0
|
存储 缓存 自然语言处理
【Elasticsearch】Elasticsearch倒排索引详解
【Elasticsearch】Elasticsearch倒排索引详解
442 12
|
存储 自然语言处理 NoSQL
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之倒排索引(三)
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之倒排索引(三)
|
存储 JSON 自然语言处理
技术经验分享:Elasticsearch倒排索引结构
技术经验分享:Elasticsearch倒排索引结构
110 0
|
存储 自然语言处理 NoSQL
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之列存(二)
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之列存(二)
|
存储 JSON NoSQL
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之行存(一)
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之行存(一)