当前位置: 代码迷 >> 综合 >> elasticsearch 笔记四:聚合分析
  详细解决方案

elasticsearch 笔记四:聚合分析

热度:22   发布时间:2023-12-16 17:15:31.0

1.第一个分析需求:计算每个tag下的商品数量 


GET /ecommerce/product/_search
{"aggs": {"group_by_tags": {"terms": {"field": "tags"}}}
}-----------------------------------------------------------------------
{"took": 48,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 4,"max_score": 1,"hits": [{"_index": "ecommerce","_type": "product","_id": "2","_score": 1,"_source": {"name": "jiajieshi yagao","desc": "youxiao fangzhu","price": 25,"producer": "jiajieshi producer","tags": ["fangzhu"]}},{"_index": "ecommerce","_type": "product","_id": "4","_score": 1,"_source": {"name": "heiren","desc": "xiren yagao","price": 50,"producer": "jiajieshi yagao","tags": ["heiren"]}},{"_index": "ecommerce","_type": "product","_id": "1","_score": 1,"_source": {"name": "heiren","desc": "xiren yagao","price": 50,"producer": "jiajieshi yagao","tags": ["heiren"]}},{"_index": "ecommerce","_type": "product","_id": "3","_score": 1,"_source": {"name": "zhonghua yagao","desc": "caoben zhiwu","price": 40,"producer": "zhonghua producer","tags": ["qingxin"]}}]},"aggregations": {"group_by_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "heiren","doc_count": 2},{"key": "fangzhu","doc_count": 1},{"key": "qingxin","doc_count": 1}]}}
}
==============================================================================
GET /ecommerce/product/_search
{"size":0,"aggs": {"group_by_tags": {"terms": {"field": "tags"}}}
}
-----------------------------------------------------------------------------
{"took": 23,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 4,"max_score": 0,"hits": []},"aggregations": {"group_by_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "heiren","doc_count": 2},{"key": "fangzhu","doc_count": 1},{"key": "qingxin","doc_count": 1}]}}
}

2.将文本field 的fielddata 属性设为 true

PUT /ecommerce/_mapping/product/
{"properties":{"tags":{"type":"text","fielddata":true}}
}

3.聚合分析的需求,先分组,再算每组的平均值,计算每个tag 下的平均价格

GET /ecommerce/product/_search
{"size": 0,"aggs": {"group_by_tags": {"terms": {"field": "tags"},"aggs": {"avg_price": {"avg": {"field": "price"}}}}}
}-----------------------------------------------------------------------------
{"took": 15,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 4,"max_score": 0,"hits": []},"aggregations": {"group_by_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "heiren","doc_count": 2,"avg_price": {"value": 50}},{"key": "fangzhu","doc_count": 1,"avg_price": {"value": 25}},{"key": "qingxin","doc_count": 1,"avg_price": {"value": 40}}]}}
}

4.第四个数据分析需求:计算每个tag下的商品的平均价格,并且按照平均价格降序排序

GET /ecommerce/product/_search
{"aggs": {"all_tags": {"terms": {"field": "tags","order": {"avg_price": "desc"}},"aggs": {"avg_price": {"avg": {"field": "price"}}}}}
}--------------------------------------------------------------------------
{"took": 9,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 4,"max_score": 0,"hits": []},"aggregations": {"all_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "heiren","doc_count": 2,"avg_price": {"value": 50}},{"key": "qingxin","doc_count": 1,"avg_price": {"value": 40}},{"key": "fangzhu","doc_count": 1,"avg_price": {"value": 25}}]}}
}

5.第五个数据分析需求:按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格

GET /ecommerce/product/_search
{"size": 0,"aggs": {"group_by_price": {"range": {"field": "price","ranges": [{"from": 0,"to": 20},{"from": 20,"to": 40},{"from": 40,"to": 50}]},"aggs": {"group_by_tags": {"terms": {"field": "tags"},"aggs": {"average_price": {"avg": {"field": "price"}}}}}}}
}
------------------------------------------------------------------------------
{"took": 10,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 4,"max_score": 0,"hits": []},"aggregations": {"group_by_price": {"buckets": [{"key": "0.0-20.0","from": 0,"to": 20,"doc_count": 0,"group_by_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": []}},{"key": "20.0-40.0","from": 20,"to": 40,"doc_count": 1,"group_by_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "fangzhu","doc_count": 1,"average_price": {"value": 25}}]}},{"key": "40.0-50.0","from": 40,"to": 50,"doc_count": 1,"group_by_tags": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "qingxin","doc_count": 1,"average_price": {"value": 40}}]}}]}}
}

 

 

 

 

 

 

  相关解决方案