使用聚合过滤器进行术语聚合会返回比没有聚合过滤器更多的doc_count

时间:2017-02-21 19:20:55

标签: elasticsearch

我将一些数据作为嵌套对象存储在ElasticSearch中,但聚合结果对我来说没有意义。不知道为什么在应用聚合过滤器时,我会在doc_count中有更多的嵌套对象。

with aggregation filter

without aggregation filter的查询有效内容如下所示,删除必填部分将成为{ "from": 0, "size": 0, "aggregations": { "requestedDimension": { "nested": { "path": "NESTED_PATH" }, "aggregations": { "requestedDimension": { "filter": { "bool": { "must": [ // query for without filter will remove this must { "terms": { "NESTED_PATH.PROP": [ "ITEM_1" ] } } ], "disable_coord": false, "adjust_pure_negative": true } }, "aggregations": { "requestedDimension": { "terms": { "field": "NESTED_PATH.PROP1", "size": 10 }, "aggregations": { "userCount": { "reverse_nested": {} } } } } } } } } } 查询。

[£$](\d+,\d+\.\d+|\d+\.\d+|\d+)

1 个答案:

答案 0 :(得分:0)

原来这是因为术语聚合是近似的 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#search-aggregations-bucket-terms-aggregation-approximate-counts

PROP是一个高基数属性,因此整个前10个元素可能不是每个分片中的前10个元素。当我应用过滤器聚合时,它会过滤掉除前10个元素之外的所有元素,因此它可以确保计算所有前10个元素。