在弹性搜索中限制聚合到顶部X命中

b_h*_*ger 6 aggregation elasticsearch elasticsearch-aggregation

ElasticSearch基于查询的所有命中来独立于from和size参数构建聚合结果.这是我们在大多数情况下想要的,但我有一个特殊情况,我需要将聚合限制在前N个命中.限制过滤器不适合,因为它不能获取最佳N项,而只能获取与查询匹配的第一个X(每个分片),而与其分数无关.

有没有办法构建一个命中数具有上限N的查询,以便能够构建限制在那些前N个结果中的聚合?如果是这样怎么样?

附属问题:限制匹配文件的分数可能是另一种选择,即使在我的情况下我需要一个固定的界限.min_score参数是否会影响聚合?

Tho*_*asC 0

如果您使用版本 > 1.3 的 ElasticSearch 集群,则可以通过将top_hits 聚合嵌套在聚合中、对所需字段进行排序并将参数设置size为 X 来使用 top_hits 聚合。

相关文档可以在这里找到。