全局聚合编辑

定义搜索执行上下文中所有文档的单个桶。此上下文由您正在搜索的索引和文档类型定义,但不受搜索查询本身的影响。

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

示例

response = client.search(
  index: 'sales',
  size: 0,
  body: {
    query: {
      match: {
        type: 't-shirt'
      }
    },
    aggregations: {
      all_products: {
        global: {},
        aggregations: {
          avg_price: {
            avg: {
              field: 'price'
            }
          }
        }
      },
      t_shirts: {
        avg: {
          field: 'price'
        }
      }
    }
  }
)
puts response
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" } }
  }
}

global 聚合具有空主体

为此 global 聚合注册的子聚合

上面的聚合演示了如何对搜索上下文中的所有文档计算聚合(在本例中为 avg_price),而不管查询如何(在我们的示例中,它将计算目录中所有产品的平均价格,而不仅仅是“衬衫”)。

上述聚合的响应

{
  ...
  "aggregations": {
    "all_products": {
      "doc_count": 7, 
      "avg_price": {
        "value": 140.71428571428572 
      }
    },
    "t_shirts": {
      "value": 128.33333333333334 
    }
  }
}

已聚合的文档数(在我们的例子中,是搜索上下文中的所有文档)

索引中所有产品的平均价格

所有 T 恤的平均价格