Elasticsearch进阶笔记第二十篇

129 阅读2分钟

Elasticsearch高手进阶篇(40)

深入聚合数据分析_下钻分析之统计每季度每个品牌的销售额

两个需求:

  • 通过季度进行分块日期后,我们再根据品牌得到每个品牌的销售总额
  • 通过季度进行分块日期后,得到该季度的销售总额
 GET /waws_tvs/sales/_search 
 {
   "size": 0,
   "aggs": {
     "group_by_sold_date": {
       "date_histogram": {
         "field": "sold_date",
         "interval": "quarter",  # 季度
         "format": "yyyy-MM-dd",
         "min_doc_count": 0,
         "extended_bounds": {
           "min": "2016-01-01",
           "max": "2017-12-31"
         }
       },
       "aggs": {
         "group_by_brand": {
           "terms": {
             "field": "brand"
           },
           "aggs": {
             "sum_price": {
               "sum": {
                 "field": "price"
               }
             }
           }
         },
         "total_sum_price": {
           "sum": {
             "field": "price"
           }
         }
       }
     }
   }
 }
 
 {
   "took": 12,
   "timed_out": false,
   "_shards": {
     "total": 5,
     "successful": 5,
     "failed": 0
   },
   "hits": {
     "total": 8,
     "max_score": 0,
     "hits": []
   },
   "aggregations": {
     "group_by_sold_date": {
       "buckets": [
         {
           "key_as_string": "2016-01-01",
           "key": 1451606400000,
           "doc_count": 0,
           "total_sum_price": {
             "value": 0
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": []
           }
         },
         {
           "key_as_string": "2016-04-01",
           "key": 1459468800000,
           "doc_count": 1,
           "total_sum_price": {
             "value": 3000
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": [
               {
                 "key": "小米",
                 "doc_count": 1,
                 "sum_price": {
                   "value": 3000
                 }
               }
             ]
           }
         },
         {
           "key_as_string": "2016-07-01",
           "key": 1467331200000,
           "doc_count": 2,
           "total_sum_price": {
             "value": 2700
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": [
               {
                 "key": "TCL",
                 "doc_count": 2,
                 "sum_price": {
                   "value": 2700
                 }
               }
             ]
           }
         },
         {
           "key_as_string": "2016-10-01",
           "key": 1475280000000,
           "doc_count": 3,
           "total_sum_price": {
             "value": 5000
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": [
               {
                 "key": "长虹",
                 "doc_count": 3,
                 "sum_price": {
                   "value": 5000
                 }
               }
             ]
           }
         },
         {
           "key_as_string": "2017-01-01",
           "key": 1483228800000,
           "doc_count": 2,
           "total_sum_price": {
             "value": 10500
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": [
               {
                 "key": "三星",
                 "doc_count": 1,
                 "sum_price": {
                   "value": 8000
                 }
               },
               {
                 "key": "小米",
                 "doc_count": 1,
                 "sum_price": {
                   "value": 2500
                 }
               }
             ]
           }
         },
         {
           "key_as_string": "2017-04-01",
           "key": 1491004800000,
           "doc_count": 0,
           "total_sum_price": {
             "value": 0
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": []
           }
         },
         {
           "key_as_string": "2017-07-01",
           "key": 1498867200000,
           "doc_count": 0,
           "total_sum_price": {
             "value": 0
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": []
           }
         },
         {
           "key_as_string": "2017-10-01",
           "key": 1506816000000,
           "doc_count": 0,
           "total_sum_price": {
             "value": 0
           },
           "group_by_brand": {
             "doc_count_error_upper_bound": 0,
             "sum_other_doc_count": 0,
             "buckets": []
           }
         }
       ]
     }
   }
 }

Elasticsearch高手进阶篇(41)

深入聚合数据分析_搜索+聚合:统计指定品牌下每个颜色的销量

搜索+聚合

实际上来说,我们之前学习的搜索相关的知识,完全可以和聚合组合起来使用

 select count(*) from tvs.sales where brand like "%长%" group by price
  • es aggregation,scope,任何的聚合,都必须在搜索出来的结果数据中之行,搜索结果,就是聚合分析操作的scope
 GET /waws_tvs/sales/_search 
 {
   "size": 0,
   "query": {
     "term": {
       "brand": {
         "value": "小米"
       }
     }
   },
   "aggs": {
     "group_by_color": {
       "terms": {
         "field": "color"
       }
     }
   }
 }
 
 {
   "took": 52,
   "timed_out": false,
   "_shards": {
     "total": 5,
     "successful": 5,
     "failed": 0
   },
   "hits": {
     "total": 2,
     "max_score": 0,
     "hits": []
   },
   "aggregations": {
     "group_by_color": {
       "doc_count_error_upper_bound": 0,
       "sum_other_doc_count": 0,
       "buckets": [
         {
           "key": "绿色",
           "doc_count": 1
         },
         {
           "key": "蓝色",
           "doc_count": 1
         }
       ]
     }
   }
 }