使用聚合返回多个字段

时间:2016-07-05 14:38:12

标签: elasticsearch

我想对sum进行汇总,但也要通过"返回"组。字段。

例如,我想对学校数据库进行查询,以获得特定班级和学习的平均成绩 在SQL中运行:

select class, study, examId, avg(grade) 
from grades
group by study, examId

结果如下:

class  | study        | avg(grade)
a1     | gymnastics   | 85
a1     | mathematics  | 87 
a2     | gymnastics   | 85
a2     | mathematics  | 87`

因此结果包含按字段分组(类和研究)和聚合结果。

我想用弹性进行相同的查询,并返回聚合中的所有列(class,study,avg(grade))

有什么想法吗? 提前致谢。 尤瓦

1 个答案:

答案 0 :(得分:1)

您需要使用Sub Aggregation 使用此查询:

{
"size": 0,
"aggs": {
  "groupByClass": {
     "terms": {
        "field": "class"
     },
     "aggs": {
        "groupByStudy": {
           "terms": {
              "field": "study"
           },
           "aggs": {
              "averageOfGrades": {
                 "avg": {
                    "field": "grade"
                 }
              }
           }
         }
       }
    }
   }
 }

希望这有帮助