什么相当于弹性搜索中的分组和收集列表?

时间:2018-05-01 18:21:41

标签: elasticsearch

我有一个弹性索引

{class_id: 1, student_id: 10}
{class_id: 2, student_id: 20}
{class_id: 1, student_id: 30}
{class_id: 2, student_id: 40}

我想要一个聚合

{class_id: 1, student_ids: [10,30]}
{class_id: 2, student_ids: [20,40]}

不确定如何去做

1 个答案:

答案 0 :(得分:1)

您只需使用两个terms聚合,如下所示:

{
  "size": 0,
  "aggs": {
    "classes": {
      "terms": {
        "field": "class_id"
      },
      "aggs": {
        "students": {
          "terms": {
            "field": "student_id"
          }
        }
      }
    }
  }
}

每个班级和每个班级桶里面都会有一个桶,每个班级的学生都会得到一个桶。