我有一个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
    }
  }
}

关于elasticsearch - Elasticsearch筛选汇总结果(SQL HAVING),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42087918/

10-11 22:44
查看更多