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

  • Post author:
  • Post category:其他



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的内容返回。



版权声明:本文为cxh6863原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。