第三篇 elasticsearch的group by+avg+sort等聚合分析

来源:互联网 发布:淘宝网天猫商城男装 编辑:程序博客网 时间:2024/05/21 18:31

本文依据如下数据模板进行分析

PUT /ecommerce/product/1{    "name" : "gaolujie yagao",    "desc" :  "gaoxiao meibai",    "price" :  30,    "producer" :      "gaolujie producer",    "tags": [ "meibai", "fangzhu" ]}

需求一:计算每个tag下的商品数据

GET /ecommerce/product/_search{  "aggs": {//聚合函数    "group_by_tags": {//该名称可以随便起      "terms": { "field": "tags" }    }  }}

第一次运行此代码会报错,原因是field使用时要将fielddata属性设置为true,此属性左右后面在进行讲解:

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

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

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

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

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

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

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

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

GET /ecommerce/product/_search{  "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"              }            }          }        }      }    }  }}
阅读全文
0 0
原创粉丝点击