Elasticsearch 顶尖高手--快速入门案例实战:group by + avg + sort等聚合分析
Posted mr-wangyue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch 顶尖高手--快速入门案例实战:group by + avg + sort等聚合分析相关的知识,希望对你有一定的参考价值。
1.计算每个tag下的商品数量
GET /ecommerce/product/_search
{
“aggs”:{
“group_by_tags”:{
“terms”:{“field”:”tags”}
}
}
}
将文本field的fielddate属性设置为true
PUT /ecommerce/_mapping/product
{
“properties”:{
“tags”:{
“type”:”text”,
“fielddata”:true
}
}
}
重新执行分组命令
“size”:0
可以不显示聚合分析数据的信息,只返回聚合分析之后的结果
2.对名称中包含yagao 的商品,计算每个tag下的商品数量
GET /ecommerce/product/_search
{
"size": 0,
"query": {
"match": {
"name": "yagao"
}
},
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags"
}
}
}
}
结果一样,因为每个商品name中都包含有yagao
3.先分组,再算每组的平均值,计算每个tag下的商品的平均价格
GET /ecommerce/product/_search
{
“size”:0,
“aggs”:{
“group_by_tags”:{
“terms”:{“fiedd”:”tags”},
“aggs”:{
“avg_price”:{
“avg”:{“field”:”price”}
}
}
}
}
}
4.在3的基础上,按照平均价格进行排序
GET /ecommerce/product/_search
{
“size”:0,
“aggs”:{
“group_by_tags”:{
“terms”:{“fiedd”:”tags”,“order”:{“avg_price”:”desc”}},
“aggs”:{
“avg_price”:{
“avg”:{“field”:”price”}
}
}
}
}
}
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_tag": {
"terms": {
"field": "tags",
"order": {
"avg_by_price": "desc"
}
},
"aggs": {
"avg_by_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}
以上是关于Elasticsearch 顶尖高手--快速入门案例实战:group by + avg + sort等聚合分析的主要内容,如果未能解决你的问题,请参考以下文章