删除''来自elasticsearch聚合的桶

时间:2017-04-27 19:33:56

标签: elasticsearch

如何在不修改aggregation术语的情况下使elasticsearch query从聚合结果中删除某些存储桶键。例如,我想从存储桶列表中删除''个空键。是否有某种我可以使用的条款?

我的查询是这样的

{
  "query": {
    "terms": {
      ...
    }
  },
  "aggs": {
        "name_match": {
          "terms": {
            "field": "name_match",
            "min_doc_count": 2,
            "size": 20
        }
    }
  }
}

结果:

{
    "hits": {
     ...
    },
    "aggregations": {
          "name_match": {
             "buckets": [
                {
                   "key": "A",
                   "doc_count": 136
                },
                {
                   "key": "B",
                   "doc_count": 16
                },
                {
                   "key": "",
                   "doc_count": 24
                }]
              }
    }
}

通缉结果

{
    "hits": {
     ...
    },
    "aggregations": {
          "name_match": {
             "buckets": [
                {
                   "key": "A",
                   "doc_count": 136
                },
                {
                   "key": "B",
                   "doc_count": 16
                }]
              }
    }
}

1 个答案:

答案 0 :(得分:2)

是的,可以使用exclude中提供的terms aggregation参数。此参数采用需要从存储桶中排除的键数组。要排除特定键,应重写您的聚合,如下所示:

{
  "query": {
    "terms": {
      ...
    }
  },
  "aggs": {
        "name_match": {
          "terms": {
            "field": "name_match",
            "exclude": [""],
            "min_doc_count": 2,
            "size": 20
        }
    }
  }
}

您可以阅读此主题here

希望这有帮助!