【HBZ分享】ElasticSearch的倒排索引是什么?图文结合,语言精炼,更加易懂的告诉你

ElasticSearch的倒排索引是什么?图文结合,语言精炼,更加易懂的告诉你

  1. 有一个场景,用户输入like,要搜索出带有like的文档,文档如下
    I like java
    I am tom
    I don`t like eat
    I like book
    how old are you
    hello tom
    you like drink water
    以上对应的ES文档如下
    【HBZ分享】ElasticSearch的倒排索引是什么?图文结合,语言精炼,更加易懂的告诉你_第1张图片
    正常情况,要搜索带有【like】的文档数据,那么就要一条条遍历去对比。那真实环境可能有几亿,几十亿数据,这种方法显然就不可接受的。因此ES的做法是将这些数据都拆成单个的词,并会记录每个词出现在哪些文档,那么拆分后结构是这样就是这样的(片段),如下图:
    【HBZ分享】ElasticSearch的倒排索引是什么?图文结合,语言精炼,更加易懂的告诉你_第2张图片
    就像上图,把所有文档都拆成单词,并分别保存,标注上单词序号,出现在哪些文档中,具体在该文档内容的第几个词。
    这就表示搜索【like】这个词,他会从单词中找到like出现在1,4,7这3个文档内容中,所以就会直接返回1,4,7文档内容,并不会全局扫描去判断。这就是倒排索引的设计。当然上面的图并不完整,下面给一张完整的倒排索引图:
    【HBZ分享】ElasticSearch的倒排索引是什么?图文结合,语言精炼,更加易懂的告诉你_第3张图片

你可能感兴趣的:(elasticsearch,搜索引擎,大数据)