跳到主要内容

Elasticsearch 什么是正向索引?什么是倒排索引?

参考答案:

正向索引和倒排索引是两种不同的索引方法,它们在Elasticsearch和其他搜索引擎中有不同的应用。

正向索引是以文档的ID为关键字,表中记录文档中每个字的位置信息。当进行查询时,正向索引会扫描表中每个文档中的字的信息,直到找出所有包含查询关键字的文档。正向索引在建立时结构相对简单,方便建立和维护。新的文档可以简单地为其创建一个新的索引块并挂接在原来的索引文件后面,而删除文档则直接找到对应的索引信息删除即可。然而,正向索引的检索效率较低,因为它需要扫描每个文档中的每个关键词,这在文档包含大量关键词时会造成大量的资源浪费。

而倒排索引则是一种用于快速查找文档的数据结构,它将每个单词与包含该单词的文档的列表进行关联。在倒排索引中,每个文档都有一个唯一的标识符,称为文档ID。对于文档集合中的每个文档,倒排索引会提取出文档中的所有单词,并将每个单词与对应的文档ID进行关联。这样,当用户输入一个查询词时,系统可以在倒排索引中查找该词对应的倒排表,并返回包含该词的文档ID列表。倒排索引是搜索引擎中最常用的数据结构之一,因为它能够快速定位包含查询词的文档,从而提高搜索效率。在Elasticsearch中,倒排索引是核心的数据结构,它使得Elasticsearch能够实现强大的全文搜索和分析功能。

总的来说,正向索引和倒排索引各有其特点,正向索引简单易建立,但检索效率低;而倒排索引虽然建立过程相对复杂,但检索效率高,更适合大规模数据集的快速搜索。在Elasticsearch等搜索引擎中,通常采用倒排索引来实现高效的搜索功能。