Elasticsearch-聚合

本文深入解析了Elasticsearch中的聚合查询功能,详细介绍了如何使用聚合操作获取数据的统计信息,包括颜色频率统计、平均价格计算以及按制造商分组的多级聚合。通过实际案例,展示了聚合查询在数据分析中的强大能力。
{
    "size" : 0,
    "aggs" : { 1
        "popular_colors" : { 2
            "terms" : { 3
              "field" : "color"
            }
        }
    }
}

1

聚合操作被置于顶层参数 aggs 之下(如果你愿意,完整形式 aggregations 同样有效)。

2

然后,可以为聚合指定一个我们想要名称,本例中是: popular_colors 。

3

最后,定义单个桶的类型 terms 。

{
...
   "hits": {
      "hits": []            ....1
   },
   "aggregations": {
      "popular_colors": {   ....2 
         "buckets": [
            {
               "key": "red",  ....3
               "doc_count": 4  ....4
            },
            {
               "key": "blue",
               "doc_count": 2
            },
            {
               "key": "green",
               "doc_count": 2
            }
         ]
      }
   }
}

 

1

因为我们设置了 size 参数,所以不会有 hits 搜索结果返回。

2

popular_colors 聚合是作为 aggregations 字段的一部分被返回的。

3

每个桶的 key 都与 color 字段里找到的唯一词对应。它总会包含 doc_count 字段,告诉我们包含该词项的文档数量。

4

每个桶的数量代表该颜色的文档数量。

增加度量指标

 

{
   "size" : 0,
   "aggs": {
      "colors": {
         "terms": {
            "field": "color"
         },
         "aggs": {  ...1
            "avg_price": { ...2
               "avg": {
                  "field": "price" ...3
               }
            }
         }
      }
   }
}

1

为度量新增 aggs 层。

2

为度量指定名字: avg_price 。

3

最后,为 price 字段定义 avg 度量。

嵌套桶

 

{
   "size" : 0,
   "aggs": {
      "colors": {
         "terms": {
            "field": "color"
         },
         "aggs": {
            "avg_price": { 
               "avg": {
                  "field": "price"
               }
            },
            "make": { 
                "terms": {
                    "field": "make" 
                }
            }
         }
      }
   }
}

1

注意前例中的 avg_price 度量仍然保持原位。

2

另一个聚合 make 被加入到了 color 颜色桶中。

3

这个聚合是 terms 桶,它会为每个汽车制造商生成唯一的桶。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值