elasticsearch聚合函数

计算每个tag下的商品数量

 

GET /ecommerce/product/_search

{

  "aggs": {  //聚合

    "group_by_tags": { //聚合任意名字

      "terms": { "field": "tags" }  //terms分组字段得到分组数量

    }

  }

}

 

 

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

 

GET /ecommerce/product/_search

{

  "size": 0,

  "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" }  //avg聚合函数

                }

            }

        }

    }

}

 

 

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

 

GET /ecommerce/product/_search

{

    "size": 0,

    "aggs" : {

        "all_tags" : {

            "terms" : { "field" : "tags", "order": { "avg_price": "desc" } },

            "aggs" : {

                "avg_price" : {

                    "avg" : { "field" : "price" }

                }

            }

        }

    }

}

 

 

按照指定的价格范围区间进行分组,然后在每组内再按照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_tags": {

          "terms": {

            "field": "tags"

          },

          "aggs": {

            "average_price": {

              "avg": {

                "field": "price"

              }

            }

          }

        }

      }

    }

  }

}

posted @ 2018-08-30 14:24  Kero小柯  阅读(238)  评论(0编辑  收藏  举报