全局聚合

全局聚合 #

global 全局聚合让你能跳出过滤聚合的聚合上下文。即使你包含了一个缩小文档集的过滤查询, global 聚合仍然对所有文档进行聚合,就好像过滤查询不存在一样。它忽略 filter 聚合,并隐式地假设 match_all 查询。

以下示例返回索引中所有文档的 taxful_total_price 字段的 avg 值:

GET sample_data_ecommerce/_search
{
  "size": 0,
  "query": {
    "range": {
      "taxful_total_price": {
        "lte": 50
      }
    }
  },
  "aggs": {
    "total_avg_amount": {
      "global": {},
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "taxful_total_price"
          }
        }
      }
    }
  }
}

返回内容

...
"aggregations" : {
  "total_avg_amount" : {
    "doc_count" : 4675,
    "avg_price" : {
      "value" : 75.05542864304813
    }
  }
 }
}

你可以看到, taxful_total_price 字段的平均值是 75.05,而不是 filter 示例中查询匹配时看到的 38.36。