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 的倒排索引
56 2
|
6月前
|
存储 缓存 自然语言处理
【Elasticsearch专栏 05】深入探索:Elasticsearch在处理非结构化数据时,倒排索引有何优势
在处理非结构化数据时,倒排索引的优势在于其高效的查询性能,能够迅速匹配文本中的关键词,实现全文搜索。此外,倒排索引支持复杂的查询操作,可扩展性强,且通过压缩技术优化存储空间。这些特点使倒排索引成为处理非结构化数据的理想选择。
123 1
|
6月前
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 01】深入探索:Elasticsearch的正向索引和倒排索引是什么?
正向索引根据文档ID直接查找文档内容,适用于精确匹配场景;而倒排索引则基于文档内容构建,通过关键词快速定位相关文档,适用于全文搜索,显著提高查询效率,是搜索引擎的核心技术。
81 2
|
18天前
|
测试技术 API 开发工具
ElasticSearch核心概念:倒排索引
ElasticSearch核心概念:倒排索引
49 6
|
4月前
|
存储 缓存 自然语言处理
【Elasticsearch】Elasticsearch倒排索引详解
【Elasticsearch】Elasticsearch倒排索引详解
168 12
|
5月前
|
存储 JSON 自然语言处理
技术经验分享:Elasticsearch倒排索引结构
技术经验分享:Elasticsearch倒排索引结构
42 0
|
5月前
|
存储 自然语言处理 NoSQL
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之倒排索引(三)
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之倒排索引(三)
|
5月前
|
存储 自然语言处理 NoSQL
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之列存(二)
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之列存(二)
|
5月前
|
存储 JSON NoSQL
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之行存(一)
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之行存(一)
|
自然语言处理 搜索推荐 索引
分布式系列教程(31) -ElasticSearch倒排索引
分布式系列教程(31) -ElasticSearch倒排索引
93 0