Elasticsearch 筛选聚合结果(SQL 有)

Elasticserach filter on aggregated results (SQL 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
    }

术语聚合有一个 min_doc_count option 您可以使用。例如,

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