跳到主要内容

全局聚合 global

Global Aggregation

Global Aggregation 是对所有的文档进行聚合,而不受查询条件的限制

全局聚合器只能作为顶级聚合器放置,因为在另一个桶聚合器中嵌入全局聚合器没有意义。

比如: 我们有50个文档,通过查询条件筛选之后存在10个文档,此时我想统计总共有多少个文档。是50个,因为global统计不受查询条件的限制。

POST /sales/_search?size=0
{
"query" : {
"match" : { "type" : "t-shirt" }
},
"aggs" : {
"all_products" : {
"global" : {},
"aggs" : {
"avg_price" : { "avg" : { "field" : "price" } }
}
},
"t_shirts": { "avg" : { "field" : "price" } }
}
}

上面的聚合演示了如何计算搜索上下文中所有文档的聚合(在本例中为avg_price),而不考虑query。

上述聚合的响应

{
...
"aggregations" : {
"all_products" : {
"doc_count" : 7, (1)
"avg_price" : {
"value" : 140.71428571428572 (2)
}
},
"t_shirts": {
"value" : 128.33333333333334 (3)
}
}
}
  • (1)聚合的文档数(在本例中,是搜索上下文中的所有文档)
  • (2)指数中所有产品的平均价格
  • (3)所有t恤的平均价格