目录
- 0、构造数据
- 1、第一个聚合分析的需求:计算每个tag下的商品数量
- 2、第二个聚合分析的需求:对名称中包含yagao的商品,计算每个tag下的商品数量
- 3、第三个聚合分析的需求:先分组,再算每组的平均值,计算每个tag下的商品的平均价格
- 4、第四个聚合分析的需求:计算每个tag下的商品的平均价格,并且按照平均价格降序排序
- 5、第五个聚合分析的需求:按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格,按照平均价格升序
0、构造数据
PUT /ecommerce/product/1
{
"_index": "ecommerce",
"_type": "product",
"_id": "1",
"_score": 1,
"_source": {
"name": "zhonghua yagao",
"desc": "caoben zhiwu",
"price": 30,
"producer": "zhonghua producer",
"tags": [
"qingxin"
]
}
1、第一个聚合分析的需求:计算每个tag下的商品数量
GET /ecommerce/product/_search
{
"size": 0,
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags"
}
}
}
}
反馈信息
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 6,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_tags": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "fangzhu",
"doc_count": 3
},
{
"key": "qingxin",
"doc_count": 3
}
]
}
}
}
2、第二个聚合分析的需求:对名称中包含yagao的商品,计算每个tag下的商品数量
GET /ecommerce/product/_search
{
"size": 0,
"query": {
"match": {
"name": "yagao"
}
},
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags"
}
}
}
}
反馈信息:
{
"took": 8,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 6,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_tags": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "fangzhu",
"doc_count": 3
},
{
"key": "qingxin",
"doc_count": 3
}
]
}
}
}
3、第三个聚合分析的需求:先分组,再算每组的平均值,计算每个tag下的商品的平均价格
GET ecommerce/product/_search
{
"size": 0,
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags"
},
"aggs": {
"avg_salary": {
"avg": {
"field": "price"
}
}
}
}
}
}
反馈信息
{
"took": 7,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 6,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_tags": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "fangzhu",
"doc_count": 3,
"avg_salary": {
"value": 35
}
},
{
"key": "qingxin",
"doc_count": 3,
"avg_salary": {
"value": 34.333333333333336
}
}
]
}
}
}
4、第四个聚合分析的需求:计算每个tag下的商品的平均价格,并且按照平均价格降序排序
GET ecommerce/product/_search
{
"size": 0,
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags",
"order": {
"avg_salary": "desc"
}
},
"aggs": {
"avg_salary": {
"avg": {
"field": "price"
}
}
}
}
}
}
5、第五个聚合分析的需求:按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格,按照平均价格升序
GET ecommerce/product/_search
{
"size": 0,
"aggs": {
"group_by_price": {
"range": {
"field": "price",
"ranges": [
{
"from": 20,
"to": 40
},
{
"from": 40,
"to": 60
}
]
},
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags",
"order": {
"avg_price": "asc"
}
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}
反馈信息
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 6,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_price": {
"buckets": [
{
"key": "20.0-40.0",
"from": 20,
"to": 40,
"doc_count": 4,
"group_by_tags": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "fangzhu",
"doc_count": 2,
"avg_price": {
"value": 30
}
},
{
"key": "qingxin",
"doc_count": 2,
"avg_price": {
"value": 31.5
}
}
]
}
},
{
"key": "40.0-60.0",
"from": 40,
"to": 60,
"doc_count": 2,
"group_by_tags": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "qingxin",
"doc_count": 1,
"avg_price": {
"value": 40
}
},
{
"key": "fangzhu",
"doc_count": 1,
"avg_price": {
"value": 45
}
}
]
}
}
]
}
}
}