找到问题的解决办法了么?

关于ES里面的postFilter

Elasticsearch | 作者 Charele | 发布于2022年09月09日 | 阅读数:825

前不久有一个关于postFilter实现的问题,当时没仔细想。
后来想想没这么简单。
 
postFilter不影响聚合的结果,又能过滤hits结果。
我在想它是不是在聚合之后起作用的,
因为如果在聚合之前,把词都过滤掉了,那聚合这部分不是不对了?
 
但看看,又不是,它好像是在聚合之前的执行,
111.png

 
有大佬能解释下马?
 
已邀请:

Ombres

赞同来自:

可以看看lucene得执行过程,es用了multiCollector包装了一批collectors,然后呢所有的collector会过一遍所有的docid,但是不同collector做的事情不太一样,比如有的排序取topn,有的做统计,大概是这样的

Charele - Cisco4321

赞同来自:

我不晓得你是如何得出这个谬论的?
所有收集器能看到所有文档号?
 
看下这个,a有3个文档,其中值分为是"aaa", "bbb", "ccc",
 
蓝色的查询可以看成一个过滤器,它过滤了"bbb", "ccc"(的文档号),
所以聚合收集器只能看到“aaa"那个文档号,
所以它只收集到了"aaa"的结果
 
111.png

要回复问题请先登录注册