上一篇我们介绍了Elasticsearch底层使用的倒排索引结构,那么什么是倒排索引呢?这批文章我们就介绍一下。
比如传统的正排索引是这样的:
比如这张表,我们以cost_id为索引基础,后面相关的数据都是与当前行的cost_id进行关联的,那么我们再查询的时候,我们通过索引cost_id进行查询,例如查询cost_id为4的信息,那么他只能就查询到cost_id=4的这条记录。
这里我们就可以理解成正排索引。所以正排索引的结果是这样的
那么倒排索引是什么呢?
还是以上面这张表为示例,那么我们除了建立上面这张表的索引之外,我们还要根据分词进行创建索引,例如这里我们创建一个user_id为索引的结构,示例为:
userid cost_ids 9 4 3 5,8 2 6,7,3
这样子当我们查询userid为9的时候,他就能找到文档id位4的记录,然后根据4返回所有的结果。这种就是倒排索引。倒排索引的结构图是这样的:
下面用图示给大家再介绍下Elasticsearch中的倒排索引是什么样的。
1、首先我们肯定是有很多文档,每一个文档标记一个id,每一个文档里面的文本进行分词,那么结果就像下图所示:
2、此时文档如果被Elasticsearch进行索引的时候,他就会根据分词结果与文档id之间的关系,简历倒排索引,示例如下图:
3、当我们查询某个关键词的时候,那么Elasticsearch就会根据关键词先查找对应的文档id,然后根据文档id来返回对应的结果。这就是倒排索引
还没有评论,来说两句吧...