【发布时间】:2017-05-08 13:06:35
【问题描述】:
我有一个简单的场景:
我搜索一些文本,弹性返回文档和
聚合。然后,我使用从该聚合返回的字段中的值过滤该搜索。我在过滤器中使用术语查询
我希望通过我的过滤条件过滤文档,这工作正常。
但是我想要聚合桶而不应用过滤条件(因为如果我在应用过滤器后得到桶,我只会得到那个值)
-
我在不应用过滤器的情况下获取聚合的解决方法:向弹性搜索发送两个请求,在第一个请求中,发送应用过滤器的查询,在第二个请求中,发送不应用过滤器的查询
问题:有没有更好的方法来实现这一点?我环顾四周,我想我可以在定义聚合时设置global:{},但我不确定!
或者更好地说,有没有办法在将过滤器应用于文档之前获得聚合结果?
编辑
我进行了一些搜索,看起来 post_filter 是为此类情况设计的,即,如果您不希望您的过滤器影响聚合。但是,也有很多关于post_filter性能的讨论
现在我想知道发送两个请求在性能方面是否比使用 post_filter 更好。
【问题讨论】:
标签: elasticsearch