Elasticsearch带过滤器的嵌套聚合查询

时间:2019-07-27 04:01:22

标签: elasticsearch

我正在尝试将过滤器应用于嵌套的聚合查询。我无法应用该过滤器。

我有如下数据。列表中的嵌套字典(每个字典代表一个地址)。一些地址具有“ geo_location”,而一些则没有。我想找出地址“类型”的计数(汇总查询)。例如:类型1:45000,类型2:40,000,但是我只希望对没有填充“ geo_location”字段的地址进行计数。

"addresses": [
            {
              "geo_location": {
                "lat": 42.407345,
                "lon": -83.169199
              },

              "type": 1,
              "addr_id": 26816125,

            },
            {

              "geo_source": "RESIDENTIAL",
              "geo_location": {
                "lat": 42.352785,
                "lon": -83.311244
              },
              "type": 1,

            },
              {
              "type": 2,
              "addr_id": 3374602,
            },
            {
              "type": 2,
              "addr_id": 99446474,
            }
          ]

我曾尝试根据类型进行汇总,但是无法为其中没有“ geo_location”字段的地址过滤汇总。

GET /search/_search
{
  "size": 0,
  "aggs": {
    "Nesting": {
      "nested": {
        "path": "addresses"
      },

      "aggs": {
        "keyword_names": {
          "terms": {
            "field": "addresses.type",
            "size": 100
          }    }
      }
    }
  }
}
result:     


   {
        "key": 1,
        "doc_count": 671
      },
      {
        "key": 2,
        "doc_count": 88
      },
      {
        "key": 4,
        "doc_count": 44

0 个答案:

没有答案