白话Elasticsearch40-深入聚合数据分析之案例实战_Global Aggregation:单个品牌与所有品牌平均价格对比

2021-08-17 15:00:01 浏览数 (1)


概述

继续跟中华石杉老师学习ES,第40篇

课程地址: https://www.roncoo.com/view/55


Global Aggregation

官方说明 : 戳这里


案例

需求: 统计单个品牌与所有品牌平均价格对比 原始数据:

代码语言:javascript复制
GET /tvs/sales/_search
{
  "query": {
    "term": {
      "brand":  "长虹"
    }
  },
  "aggs": {
    "single_brand_avg_price": {
      "avg": {
        "field": "price"
      }
    },
    "all": {
      "global": {},
      "aggs": {
        "all_brand_avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  },
  "size": 0
}

global:就是global bucket,即将所有数据纳入聚合的scope,而不管之前的query查询出来的数据。

返回:

代码语言:javascript复制
{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "all": {
      "doc_count": 8,
      "all_brand_avg_price": {
        "value": 2650
      }
    },
    "single_brand_avg_price": {
      "value": 1666.6666666666667
    }
  }
}

分析下返回结果:

出来了两个结果,一个结果是基于query搜索结果来聚合的; 一个结果是对所有数据执行聚合后的

  • single_brand_avg_price:就是针对query搜索结果,执行的,拿到的,就是长虹品牌的平均价格
  • all.all_brand_avg_price:所有品牌的平均价格

0 人点赞