美文网首页
四、ElasticSearch之简单聚合API

四、ElasticSearch之简单聚合API

作者: 换煤气哥哥 | 来源:发表于2020-04-04 20:22 被阅读0次

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

首先得将文本field的fielddata属性设置为true
PUT /ecommerce/_mapping/product
{
    "properties": {
        "tags": {
            "type": "text",
            "fielddata": true
        }
    }
}

aggs、terms是关键词,group_by_tags可以名字任取
GET /ecommerce/product/_search
{
    "aggs": {
        "group_by_tags": {
            "terms": {
                "field": "tags"
            }
        }
    }
}

第二个分析需求:对名称中包含yagao的商品,计算每个tag下的商品数量

GET /ecommerce/product/_search
{
    "size": 0,
    "query": {
        "match": {
            "name": "yagao"
        }
    },
    "aggs": {
        "all_tags": {
            "terms": {
                "field": "tags"
            }
        }
    }
}

第三个分析需求:先分组,再算每组的平均值,计算每个tag下的商品的平均价格

{
    "size": 0,
    "aggs": {
        "group_by_tags": {
            "terms": {
                "field": "tags"
            },
            "aggs": {
                "avg_price": {
                    "avg": {
                        "field": "price"
                    }
                }
            }
        }
    }
}

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

GET /ecommerce/product/_search
{
    "size": 0,
    "aggs": {
        "all_tags": {
            "terms": {
                "field": "tags",
                "order": {
                    "avg_price": "desc"
                }
            },
            "aggs": {
                "avg_price": {
                    "avg": {
                        "field": "price"
                    }
                }
            }
        }
    }
}

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

{
    "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"
                            }
                        }
                    }
                }
            }
        }
    }
}

相关文章

网友评论

      本文标题:四、ElasticSearch之简单聚合API

      本文链接:https://www.haomeiwen.com/subject/zzdsphtx.html