【Elasticsearch7.6系列】Elasticsearch 倒排索引

发布网友 发布时间:2024-11-27 10:27

我来回答

1个回答

热心网友 时间:2024-12-04 16:29

Elasticsearch的卓越搜索性能离不开倒排索引的支撑。本文将简单探讨这个关键概念。

倒排索引,也称反向索引,是与正向索引相对的概念。正向索引通过键找值,而倒排索引则通过值找键。在数据库如Oracle或MySQL中,我们通过索引字段查找数据,而在Elasticsearch中,主要通过数据(搜索词)查找记录。

当我们向Elasticsearch插入文档时,它会为字段建立倒排索引,其结构大致如下:首先通过索引找到词典,找到与查询条件对应的倒排列表,从列表中获取文档ID,进而找到匹配的文档。

理解倒排索引,还需了解几个相关术语:词条(Term)是文档在分析后产生的基本单位;词典是所有词条的集合;FST(Finite State Transcer)是一种优化数据结构,用于减少内存占用和磁盘IO。例如,通过FST,我们可以高效地处理大量文档中的Term,查询时间复杂度为LogN。

词条索引(Term Index)是为每个Term创建的小型索引,压缩后存储在内存中,提供快速查找。倒排列表(Posting List)则是记录每个Term出现在哪些文档中的列表,包含文档ID、词频和偏移量等信息。

打个比方,倒排索引就像是一个搜索引擎的索引和字典的结合体。比如输入“早上 跑步 路上”,Elasticsearch会通过分词得到这些词条,然后通过倒排索引快速定位到包含这些词的文档。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com