从术语聚合桶中计算所有结果

时间:2017-10-04 18:06:27

标签: elasticsearch elasticsearch-dsl

GET /test*/_search
{
  "size": 0,
  "query": {
    "match_all": {}
  },
  "aggs": {
    "test": {
      "terms": {
        "field": "name.keyword",
        "min_doc_count": 10
      }
    }
  }
}

上述查询将返回超过10次的所有唯一名称。 我希望查询返回那些出现次数超过10次的唯一名称的计数。

我无法找到计算方法。任何人都可以帮忙吗。

感谢。

1 个答案:

答案 0 :(得分:0)

这样就可以了。

“count”将为您提供出现次数超过10次的唯一名称的计数。

GET /test*/_search?filter_path=aggregations.count
{
  "size": 0,
  "query": {
    "match_all": {}
  },
  "aggs": {
    "test": {
      "terms": {
        "field": "name.keyword",
        "min_doc_count": 10
      },
      "aggs": {
        "test2": {
          "value_count": {
            "field": "name.keyword"
          }
        },
        "test3":{
          "bucket_script": {
            "buckets_path": "test2",
            "script": "return 1"
          }
        }
      }
    },
    "count":{
      "sum_bucket": {
        "buckets_path": "test>test3"
      }
    }
  }
}

如果这可以解决您的问题,请告诉我。