大神的文章在这里
https://www.amazingkoala.com.c ... .html
我以前发过这个问题,当时的疑问,一直没有解决。
最近才解开,有兴趣的可以指出错误或看法
ES中也用了这个优化,比如在long类型的范围查询时,
它是这么做的:
它用蓝色的和黄色的,
包装成了一个红色的IndexOrDocValuesQuery,一般情况下就是用的这个。
链接文章中是这么说的,"leader iteration和follow iteration",
从leader中取出每一个doc,然后去看看follow里面有没有,
有就okay,没有就放弃doc
结合图中的,仿佛蓝色结果集的就是leader, 黄色结果集的就是follow,
(通常情况下,point查询要比docValue要来得快)
我当时的疑问就是,既然蓝色可以查出结果,
肯定正确的,就是我们需要的文档号(两个划定的范围完全一样, 也不可能不一样),
为什么还要去查一下follow,再去找找follow的结果里有没有呢,
这不是多词一举吗?
https://www.amazingkoala.com.c ... .html
我以前发过这个问题,当时的疑问,一直没有解决。
最近才解开,有兴趣的可以指出错误或看法
ES中也用了这个优化,比如在long类型的范围查询时,
它是这么做的:
它用蓝色的和黄色的,
包装成了一个红色的IndexOrDocValuesQuery,一般情况下就是用的这个。
链接文章中是这么说的,"leader iteration和follow iteration",
从leader中取出每一个doc,然后去看看follow里面有没有,
有就okay,没有就放弃doc
结合图中的,仿佛蓝色结果集的就是leader, 黄色结果集的就是follow,
(通常情况下,point查询要比docValue要来得快)
我当时的疑问就是,既然蓝色可以查出结果,
肯定正确的,就是我们需要的文档号(两个划定的范围完全一样, 也不可能不一样),
为什么还要去查一下follow,再去找找follow的结果里有没有呢,
这不是多词一举吗?
1 个回复
ChrisLu
赞同来自:
query1:倒排/points
query2:正排
如果IndexOrDocValuesQuery作为leader iteration就选择query1,否则就选择query2