首页 > 解决方案 > Elasticsearch-如何使聚合仅返回匹配的键

问题描述

我正在使用elasticsearch 6.2.3,并且我正在尝试对聚合进行过滤,以仅返回与存储桶中并非全部匹配的键。或者也许我需要做一个脚本并遍历桶来只得到匹配?我的查询是:

  {
"aggs" : {
    "genres" : {
           "nested" : {
            "path" : "tags"
        },
        "aggs": {
          "d":{
        "terms" : { "field" : "tags.values.value.facet"
        },
        "aggs": {
          "NAME": {
            "filter": {
              "prefix": {
                "tags.values.value.facet": "Variatio"
              }
            }
          }
        }
      }
    }
  }                 
}}

结果看起来像这样:

"aggregations": {
"genres": {
  "doc_count": 285391,
  "d": {
    "doc_count_error_upper_bound": 0,
    "sum_other_doc_count": 44437,
    "buckets": [
      {
        "key": "null",
        "doc_count": 251811,
        "NAME": {
          "doc_count": 0
        }
      },
      {
        "key": "MMAkku",
        "doc_count": 15870,
        "NAME": {
          "doc_count": 0
        }
      },
      {
        "key": "MMBaden",
        "doc_count": 15870,
        "NAME": {
          "doc_count": 0
        }
      },
      {
        "key": "MMEttlingen",
        "doc_count": 15870,
        "NAME": {
          "doc_count": 0
        }
      },
      {
        "key": "MMEurope",
        "doc_count": 15870,
        "NAME": {
          "doc_count": 0
        }
      },
      {
        "key": "MMGermany",
        "doc_count": 15870,
        "NAME": {
          "doc_count": 0
        }
      },
      {
        "key": "MMKarlsruhe",
        "doc_count": 15870,
        "NAME": {
          "doc_count": 0
        }
      }
      }

但我只想查看与过滤器中的单词匹配的键。有什么建议么?

谢谢

标签: elasticsearch

解决方案


尝试这个

{
  "aggs": {
    "facets": {
      "filter": {
        "prefix": {
          "tags.values.value.facet": "Variatio"
        }
      },
      "aggs": {
        "facets_count": {
          "terms": {
            "field": "tags.values.value.facet"
          }
        }
      }
    }
  }
}

推荐阅读