35.分组聚合操作—bucket+metric

主要知识点:

  • bucket+metric 计算分种颜色的电视的平均价格

   

语法:

GET /tvs/sales/_search

{

"size" : 0,

"aggs": {

"colors": {

"terms": {

"field": "color"

},

"aggs": {

"avg_price": {

"avg": {

"field": "price"

}

}

}

}

}

}

   

这条语句的意思就是:按照color去分bucket,可以拿到每个color bucket中的数量,这个仅仅只是一个bucket操作,doc_count其实只是esbucket操作默认执行的一个内置metric。接下来在一个aggs中执行的bucket操作(terms)下,平级的json结构下,再加一个aggs,这个第二个aggs内部,同样取个名字,执行一个metric操作(本例对之前的每个bucket中的数据的指定的field也就是price 求一个平均值(avg)操作),这条语句前部分是bucket操作,后部分是metric操作。

执行结果如下(部分)

   

"aggregations": {

"group_by_color": {

"doc_count_error_upper_bound": 0,

"sum_other_doc_count": 0,

"buckets": [

{

"key": "红色",

"doc_count": 4,

"avg_price": {

"value": 3250

}

},

 

value:就是metric计算的结果,每个bucket中的数据的price字段求平均值后的结果。

这条语句类似mysqlsql:select avg(price) from tvs.sales group by color

posted @ 2018-03-09 20:15  outback123  阅读(382)  评论(0编辑  收藏  举报