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进行商品数据分析的方法,包括计算不同标签下商品数量、按标签分组计算平均价格、以及根据价格区间和标签进行复杂的数据聚合分析。
770

被折叠的 条评论
为什么被折叠?



