首页 > 其他分享 >Elasticsearch中的倒排索引是什么?它如何工作?

Elasticsearch中的倒排索引是什么?它如何工作?

时间:2024-10-23 09:51:44浏览次数:3  
标签:倒排 词项 索引 搜索 文档 Elasticsearch

Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,它能够快速地存储、搜索和分析大量数据。倒排索引(Inverted Index)是 Elasticsearch 和其他全文搜索引擎用来实现高效搜索的核心数据结构。

倒排索引的概念

在传统的数据库或文件系统中,我们通常使用正向索引来查找信息。例如,在一本书的目录中,章节标题对应着页码,这是一种从关键词到文档位置的映射。而倒排索引则相反,它是将文档中的每个词映射到包含这个词的所有文档列表。简单来说,倒排索引是一种从内容(词项)到其所在文档位置的映射。

倒排索引的工作原理

  1. 文本处理:首先,Elasticsearch 会接收并解析输入的文档,这个过程包括分词(将文本分割成单独的词汇单元)、去除停用词(如“的”、“了”等常见但对搜索无帮助的词语)、词干提取(还原词的基本形式)等步骤。

  2. 构建索引:经过上述处理后,每个文档被转换为一系列的词项。然后,Elasticsearch 会创建一个倒排索引表,其中每行代表一个唯一的词项,列出了该词项出现在哪些文档以及具体的位置信息。

  3. 查询与匹配:当用户执行搜索时,查询同样会被处理,比如进行分词等操作。然后,Elasticsearch 会根据查询中的词项去倒排索引中查找匹配的文档,并通过一定的算法(如TF-IDF、BM25等)来计算相关性得分,最终返回给用户最相关的搜索结果。

示例

假设我们有以下两份文档:

  • 文档 1: “The quick brown fox”
  • 文档 2: “Jumped over the lazy dog”

经过处理后,可能形成的倒排索引如下所示:

  • The: [文档1, 文档2]
  • quick: [文档1]
  • brown: [文档1]
  • fox: [文档1]
  • Jumped: [文档2]
  • over: [文档2]
  • lazy: [文档2]
  • dog: [文档2]

如果用户搜索 “quick brown”,那么Elasticsearch 将会找到只存在于文档 1 中的相关信息,并据此提供搜索结果。

通过这种方式,倒排索引使得即使面对海量的数据集,也能够非常迅速地完成复杂的搜索请求。

标签:倒排,词项,索引,搜索,文档,Elasticsearch
From: https://blog.csdn.net/qq_33240556/article/details/143106816

相关文章

  • 【Elasticsearch】分布式搜索引擎技术学习[上]
    目录一.认识与了解搜索引擎1.介绍2.安装二.初步了解Elasticsearch1.倒排索引2.IK分词器3.基础概念三.Elasticsearch基础操作1.索引库操作1.1.常见映射属性1.2.索引库的·CRUD操作2.文档操作1.1.文档的CRUD操作1.2.批量处理四.ES的Java客户端1.客户端的......
  • Explain详解与索引优化最佳实践
    Mysql安装文档参考:http://note.youdao.com/noteshare?id=12bab3ad6bde2dc0db4158df1b23b7cd&sub=69BD07746CCF4F7DA94CCFB1C4E399E8Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在select语句之前增加explain关键字......
  • 简单了解Oracle数据库中如何创建索引
    首发微信公众号:SQL数据库运维原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247486530&idx=1&sn=e5132af812a8fda7d86e1f17ecaf3a17&chksm=ea375832dd40d124027c20849d71e1c55efdd89e9ddf6e93cf310926097ea6fe14424f5187c8&token=2092690319&la......
  • MySQL和Elasticsearch使用场景
    来源:https://www.zhihu.com/question/637732937ES的底层实现:倒排索引正排索引(ForwardIndex)的实现方式为,通过文档ID去查找整个文档内容,适用于全部文档遍历或根据某个文档ID查找内容的场景。而倒排索引(InvertedIndex)的实现方式,则是通过文档中的关键词去查找文档ID列表,这也就是其非......
  • Elasticsearch应用与源码的学习方法是什么?
    学习Elasticsearch的应用与源码,可以按照以下步骤进行:入门基础:首先,可以通过官方文档或一些入门教程来了解Elasticsearch的基本概念和功能。例如,可以参考《Elasticsearch入门教程》 和《ElasticSearch入门篇(保姆级教程)-coderxz-博客园》。这些资源会介绍Elasticsearch的......
  • ELK01 Elasticsearch部署和管理,集群工作机制 ubuntu使用
    企业级日志分析系统ELK1.1.1什么是ELK1.Elasticsearch是一个实时的全文搜索,存储库和分析引擎。2.Logstash是数据处理的管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如Elasticsearch等存储库中。(java开发,有数据处理能力,比较重)3.Kibana则可以让用户......
  • Mongodb(4)索引,查看执行计划,聚合操作aggregate,表关联查询,批量插入测试数据,执行计
    创建索引,支持:单键索引、复合索引,唯一索引创建索引后台执行db.books.createIndex({open:1,close:1},{background:true})对内嵌文档字段创建索引:db.books.createIndex({"author.name":1})创建唯一索引db.books.createIndex({title:1},{unique:true})在包含嵌套对象的......
  • c# Elasticsearch统计Nested的数据
    我是直接问百度ai   es统计是nested结构的数据,数据有年份:reportyear,名称:accountnamezh,类型:reportperiodtype,利润:originalvalue,,需要统计:2024年,名称:营业收入,类型:2,的利润合计是多少,利润金额比较大,需要除以100000000然后生成的es是POST/your_index/_search{"query":{......
  • 大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(已更完)Kylin(已更完)Elasticsearch(正在更......
  • mysql索引
       2.1索引概述2.1.1介绍索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。在无索引情况下,就需要......