身安不如心安,屋宽不如心宽 。

再提IndexOrDocValuesQuery的问题

Elasticsearch | 作者 Charele | 发布于2023年08月10日 | 阅读数:1128

大神的文章在这里
https://www.amazingkoala.com.c ... .html
 
我以前发过这个问题,当时的疑问,一直没有解决。
最近才解开,有兴趣的可以指出错误或看法
 
ES中也用了这个优化,比如在long类型的范围查询时,
它是这么做的:
111.PNG

 
它用蓝色的和黄色的,
包装成了一个红色的IndexOrDocValuesQuery,一般情况下就是用的这个。
 
 链接文章中是这么说的,"leader iteration和follow iteration",
从leader中取出每一个doc,然后去看看follow里面有没有,
有就okay,没有就放弃doc
 结合图中的,仿佛蓝色结果集的就是leader, 黄色结果集的就是follow,
(通常情况下,point查询要比docValue要来得快)
 
 
我当时的疑问就是,既然蓝色可以查出结果,
肯定正确的,就是我们需要的文档号(两个划定的范围完全一样, 也不可能不一样),
 
为什么还要去查一下follow,再去找找follow的结果里有没有呢,
这不是多词一举吗? 
 
  
 
 
 
 
 
 
已邀请:

ChrisLu

赞同来自:

​IndexOrDocValuesQuery封装了两个Query:
query1:倒排/points
query2:正排
 
如果IndexOrDocValuesQuery作为leader iteration就选择query1,否则就选择query2

要回复问题请先登录注册