ES存储引擎 倒排索引
什么是倒排索引
当涉及倒排索引时,让我们使用一个简单的例子来说明。考虑以下三个文档的例子,这些文档代表了一些博客文章:
- 文档1:
Title: Introduction to Elasticsearch
Content: Elasticsearch is a distributed search and analytics engine.
- 文档2:
Title: Getting Started with Kibana
Content: Kibana is a data visualization and exploration tool for Elasticsearch.
- 文档3:
Title: Elasticsearch vs. Solr
Content: A comparison between Elasticsearch and Solr search engines.
现在,我们将这些文档中的单词进行分词,并构建倒排索引。假设我们使用简单的分词规则,将文本拆分为小写单词,忽略标点符号。
- 构建倒排索引:
词汇 | 文档 |
---|---|
analytics | 文档1 |
and | 文档1, 2 |
between | 文档3 |
comparison | 文档3 |
data | 文档2 |
distributed | 文档1 |
elasticsearch | 文档1, 3 |
exploration | 文档2 |
for | 文档2 |
getting | 文档2 |
started | 文档2 |
introduction | 文档1 |
is | 文档1, 2, 3 |
kibana | 文档2 |
search | 文档1, 3 |
solr | 文档3 |
tool | 文档2 |
to | 文档1, 2, 3 |
visualization | 文档2 |
vs | 文档3 |
在倒排索引中,每个词汇都对应一个倒排列表。倒排列表中记录了包含该词汇的文档,以及在这些文档中的位置、频率等信息。比如,词汇 “elasticsearch” 在文档1和文档3中出现,因此倒排列表中会包含这两个文档的信息。
当进行搜索时,查询词汇将与倒排索引中的词汇进行匹配。例如,如果搜索 “elasticsearch”, 倒排索引会指示这个词汇出现在文档1和文档3中。这样,搜索引擎就可以很快地找到包含查询词汇的文档。
倒排索引使得全文搜索非常高效,因为它避免了逐个文档搜索的过程,而是将搜索过程转化为查找倒排列表的过程,从而加速了搜索操作。