您的位置:首页 > 其它

白话Elasticsearch36-深入聚合数据分析之案例实战Histogram Aggregation:按价格区间统计电视销量和销售额

2019-08-22 23:28 471 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/yangshangwei/article/details/100026222

文章目录


概述

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

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

官方说明

Histogram Aggregation: 戳这里

histogram:类似于terms,也是进行bucket分组操作,接收一个field,按照这个field的值的各个范围区间,进行bucket分组操作 .

"histogram":{
"field": "price",
"interval": 2000
},
  • interval:2000,划分范围

    ,0~2000,2000~4000,4000~6000,6000~8000,8000~10000
    类似的,每个范围对应一个bucket

  • 根据price的值,比如2500,看落在哪个区间内,落在

    2000~4000
    ,此时就会将这条数据放入2000~4000对应的那个bucket中

  • histogram也是bucket划分的一种方法,就好比terms,将field值相同的数据划分到一个bucket中

bucket有了之后,就可以对每个bucket执行avg,count,sum,max,min,等各种metric操作,聚合分析

案例

需求: 按价格区间统计电视销量和销售额

原始数据:

DSL:

GET /tvs/sales/_search
{
"size" : 0,
"aggs":{
"price":{
"histogram":{
"field": "price",
"interval": 2000
},
"aggs":{
"revenue": {
"sum": {
"field" : "price"
}
}
}
}
}
}

返回数据

{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 8,
"max_score": 0,
"hits": []
},
"aggregations": {
"price": {
"buckets": [
{
"key": 0,
"doc_count": 3,
"revenue": {
"value": 3700
}
},
{
"key": 2000,
"doc_count": 4,
"revenue": {
"value": 9500
}
},
{
"key": 4000,
"doc_count": 0,
"revenue": {
"value": 0
}
},
{
"key": 6000,
"doc_count": 0,
"revenue": {
"value": 0
}
},
{
"key": 8000,
"doc_count": 1,
"revenue": {
"value": 8000
}
}
]
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐