在我的查询中,我将存储桶汇总为一个标量。由于我对每个存储桶(在我的案例中为数千万个)都不感兴趣,因此我想从返回的结果中删除它们;即我想执行“size”:0之类的操作来隐藏所有匹配。可能吗?

例如。:

{
  "size": 0,
  "aggs": {
    "pop": {
      "terms": {
        "field": "account_number",
        "size": 0
      },
      "aggs": {
            "average": {
               "avg": {
                  "field": "price"
               }
            }
         }
    },
    "sum_of_avg": {
      "sum_bucket": {
        "buckets_path": "pop>average"
      }
    }
  }
}

结果:
[...]
"aggregations": {
    "pop": {
      "doc_count_error_upper_bound": 40851,
      "sum_other_doc_count": 93441329,
      "buckets": [...] <== i don't want this
    },
    "sum_of_avg": {
      "value": 128.0768325884469
    }

最佳答案

我刚刚在相关问题中张贴了answer

在这种情况下,请求应如下所示:

curl -XPOST 'http://localhost:9200/<index>/_search?filter_path=aggregations.sum_of_avg' -d '
{
  "size": 0,
  "aggs": {
    "pop": {
      "terms": {
        "field": "account_number",
        "size": 0
      },
      "aggs": {
            "average": {
               "avg": {
                  "field": "price"
               }
            }
         }
    },
    "sum_of_avg": {
      "sum_bucket": {
        "buckets_path": "pop>average"
      }
    }
  }
}

PS:如果您找到其他解决方案,请在此处分享。谢谢!

07-24 09:39
查看更多