Elasticsearch面试题

103 阅读2分钟

倒排索引

ES(Elasticsearch)是一个开源的分布式搜索和分析引擎,它使用一种称为倒排索引(Inverted Index)的数据结构实现快速的全文搜索功能。

*倒排索引是指将文档中的每个词与包含它的文档的列表进行关联的数据结构。在创建倒排索引时,文档集合会被切分成单词,然后构建一个词汇表,其中每个词都与包含该词的文档列表相关联。这使得在搜索时可以快速地找到包含某个词的文档。

在ES中,倒排索引是用于全文搜索的关键组件。当文档被索引时,ES会将文档中的每个字段切分成单词,并将这些单词映射到文档的标识符。当执行搜索时,ES会在倒排索引中查找包含搜索词的文档,并返回相关的结果。

倒排索引的使用可以提高搜索的效率和准确性,特别是在处理大规模文本数据时。它是搜索引擎等文本处理系统中常见的核心技术之一。

倒排索引的搜索过程可以分为以下几个步骤:

  1. 分词:将用户输入的查询字符串进行与索引相同的分词操作。这将把查询字符串切分成词项,以便与倒排索引中的词项进行匹配。
  2. 查询倒排索引:对每个查询词项,在词汇表中找到对应的倒排列表。倒排列表中包含了包含该词项的文档的相关信息。
  3. 合并倒排列表:将多个查询词项的倒排列表进行合并,以得到包含所有查询词项的文档标识符。这将产生一个包含匹配文档的倒排列表。
  4. 评分排序:对匹配的文档进行评分排序以确定其相关性。评分排序通常基于各种算法和指标,如词频、文档长度、文档权重和查询项的重要性。
  5. 返回结果:按照评分进行排序后,将结果返回给用户。通常会返回与查询相关性最高的文档作为搜索结果。这些结果可能是按照降序排列的,以使用户能够找到最相关的文档。

- ES相关概念对比MySQL

image.png