进阶-第36__深入聚合数据分析_实战hitogram按价格区间统计电视销量和销售额

定义

histogram:类似于terms,也是进行bucket分组操作,接收一个field,按照这个field的值的各个范围区间,进行bucket分组操作

使用

"histogram":{

  "field": "price",

  "interval": 2000

},

 

interval:2000,划分范围,0~2000,2000~4000,4000~6000,6000~8000,8000~10000,buckets

 

去根据price的值,比如2500,看落在哪个区间内,比如2000~4000,此时就会将这条数据放入2000~4000对应的那个bucket中

 

bucket划分的方法,terms,将field值相同的数据划分到一个bucket中

 

bucket有了之后,一样的,去对每个bucket执行avg,count,sum,max,min,等各种metric操作,聚合分析

搜索测试

GET /tvs/sales/_search

{

 "size":0,

 "aggs": {

   "group_by_price": {

     "histogram": {

       "field": "price",

       "interval": 2000

     },

     "aggs": {

       "sum_price": {

         "sum": {

           "field": "price"

         }

       }

     }

   }

 }

}

 

结果

{

  "took": 3,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 8,

    "max_score": 0,

    "hits": []

  },

  "aggregations": {

    "group_by_price": {

      "buckets": [

        {

          "key": 0,//意思是0到2000

          "doc_count": 3,

          "sum_price": {

            "value": 3700

          }

        },

        {

          "key": 2000,//意思是2000到4000

          "doc_count": 4,

          "sum_price": {

            "value": 9500

          }

        },

        {

          "key": 4000,

          "doc_count": 0,

          "sum_price": {

            "value": 0

          }

        },

        {

          "key": 6000,

          "doc_count": 0,

          "sum_price": {

            "value": 0

          }

        },

        {

          "key": 8000,

          "doc_count": 1,

          "sum_price": {

            "value": 8000

          }

        }

      ]

    }

  }

}

 

 

猜你喜欢

转载自blog.csdn.net/qq_35524586/article/details/88563504