首页 > 解决方案 > 具有嵌套字段聚合和字段子聚合(从根)的弹性查询返回空的存储桶数组

问题描述

我编写了一个查询,其中包含对嵌套字段的聚合和对未嵌套但在根中的字段的子聚合。我希望得到每个 ownerId 的总和,但我得到了一个空的桶数组。

以下查询返回一个空的桶数组 - 尽管有结果和一个正数。

GET my-index/_search
{
  "size": 0,
  "aggs": {
    "agg_owner": {
      "nested": {
        "path": "owner_fields"
      },
      "aggs": {
        "raw_names": {
          "terms": {
            "field": "owner_fields.id.keyword",
            "size": 10
          },
          "aggs": {
            "total_amount": {
              "reverse_nested": {},
              "aggs": {
                "total_inner_amount": {
                  "terms": {
                    "field": "amount",
                    "size": 10
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

返回:

{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 45430,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "agg_owner" : {
      "doc_count" : 15494,
      "raw_names" : {
        "doc_count_error_upper_bound" : 0,
        "sum_other_doc_count" : 0,
        "buckets" : [ ]
      }
    }
  }
}

我希望看到每个 ownerId 的总和,但这并没有发生。

标签: elasticsearchnestedelasticsearch-aggregation

解决方案


必须从聚合中删除关键字:“owner_fields.id.keyword”=>“owner_fields.id”


推荐阅读