千家信息网

ElasticSearch中group by + avg + sort等聚合分析是什么样的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了ElasticSearch中group by + avg + sort等聚合分析是什么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。将
千家信息网最后更新 2026年11月02日ElasticSearch中group by + avg + sort等聚合分析是什么样的

本篇文章为大家展示了ElasticSearch中group by + avg + sort等聚合分析是什么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

将文本fields的Fielddata属性设置true

PUT http://{{es-host}}/ecommerce/_mapping/produce{        "properties":{                "tags":{                        "type":"text",                        "fielddata":true                }        }}

1、计算每个tag下的商品数量

GET http://{{es-host}}/ecommerce/produce/_search{        "size":0,        "aggs":{                "group_by_tags":{                        "terms":{                                "field":"tags"                        }                }        }}

group_by_tags 代表聚合分组名称,可以随意写,表述清楚含义即可;

field的值对应要聚合的字段

结果:

{    "took": 43,    "timed_out": false,    "_shards": {        "total": 5,        "successful": 5,        "skipped": 0,        "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": "fangzhu",                    "doc_count": 2                },                {                    "key": "meibai",                    "doc_count": 2                },                {                    "key": "qingxin",                    "doc_count": 1                }            ]        }    }}

2、按商品名称搜索并聚合

GET http://{{es-host}}/ecommerce/produce/_search{        "query":{                "match_phrase":{                        "name":"yagao"                }        },        "aggs":{                "group_by_tags":{                        "terms":{                                "field":"tags"                        }                }        },        "size":0}

检索结果:

{    "took": 17,    "timed_out": false,    "_shards": {        "total": 5,        "successful": 5,        "skipped": 0,        "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": "fangzhu",                    "doc_count": 2                },                {                    "key": "meibai",                    "doc_count": 2                },                {                    "key": "qingxin",                    "doc_count": 1                }            ]        }    }}

3、先分组,再计算每个分组的平均值

GET http://{{es-host}}/ecommerce/produce/_search{        "size":0,        "aggs":{                "group_by_tags":{                        "terms":{                                "field":"tags"                        },                        "aggs":{                                "avg_price":{                                        "avg":{                                                "field":"price"                                        }                                }                        }                }        }}

结果:

{    "took": 83,    "timed_out": false,    "_shards": {        "total": 5,        "successful": 5,        "skipped": 0,        "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": "fangzhu",                    "doc_count": 2,                    "avg_price": {                        "value": 27.5                    }                },                {                    "key": "meibai",                    "doc_count": 2,                    "avg_price": {                        "value": 40                    }                },                {                    "key": "qingxin",                    "doc_count": 1,                    "avg_price": {                        "value": 40                    }                }            ]        }    }}

上述内容就是ElasticSearch中group by + avg + sort等聚合分析是什么样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0