【ELK】用Elasticsearch搜索为什么会那么快呢?倒排索引

elasticsearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful的全文本搜索引擎,大家都知道使用elasticsearch全文搜索,是因为用它快,那为什么会快呢?这主要取决于它底层是用倒排索引实现的。那什么是倒排索引呢,与之对应的正排索引又是什么呢?

正排索引

elasticsearch是面向文档的,每向elasticsearch插入一个文档,他都会与之对应生成一个id
构建正排索引,如下

文档编号 文档内容
1 世界不会辜负可爱的人
2 而我们如此可爱
3 可爱的我们

这种方式,检索的效率低
如果用倒排索引会是什么样呢

倒排索引

倒排索引是和正排索引相反的
我们将这些文档内容分词,然后对这些分词进行分组(关于分词,具体可参考博客https://blog.csdn.net/cxh6863/article/details/106717539),每个词都会记录它出现的频率和所在文档中出现的位置
例如我从中只取了其中3个关键词,倒排索引结果如下

Term Posting List
世界 1
我们 2,3
可爱 1,2,3

查询过程

查询的时候,比如我查“可爱”这个关键词的时候,他会通过倒排索引这个关键词出现的文档位置是1,2,3,然后再通过正排索引查询到文档1,2,3的内容返回。

你可能感兴趣的:(ELK,Elasticsearch,倒排索引,正排索引)