Elasticserach过滤聚合结果(SQL HAVING)

时间:2017-02-07 10:52:10

标签: elasticsearch count aggregate having

我有一个ES查询,它聚合来自监控工具的数据。

目前,我已经找到了每个相关组中的文档数量(通过“externalId”)。

现在,我希望按每个组中的记录数过滤结果。 (类似于SQL中的“HAVING”子句,doc_count> 0)

例如,找到存储了一次以上的“externalId”。

这是我的ES查询:

{
"query":
{
   "match" :
    {
        "method" : "METHOD_NAME"
    }
},
"size":0,
"aggs":
{
  "group_by_external_id":
  {
    "terms":
    {
      "field": "externalId"
    }
  }
}
}

结果如下所示:

"aggregations": {
"group_by_external_id": {
  "doc_count_error_upper_bound": 5,
  "sum_other_doc_count": 53056,
  "buckets": [
    {
      "key": "6088417651626873",
      "doc_count": 1
    },
    {
      "key": "6088417688232882",
      "doc_count": 1
    }

1 个答案:

答案 0 :(得分:1)

条款汇总可以使用min_doc_count option。例如,

"aggs":
{
  "group_by_external_id":
  {
    "terms":
    {
      "field": "externalId",
      "min_doc_count": 2
    }
  }
}