弹性搜索,获取元素的频率和数量

时间:2016-10-30 21:27:40

标签: elasticsearch elasticsearch-aggregation

我有这种文件的索引:

        {
            "_id": "6827", 
            "_index": "test", 
            "_score": 1.0,
            "_source": {
                "class": [
                    {
                        "name": "physics",
                        "grade" : [
                                12,
                                2
                            ],
                    },
                    {
                        "name": "french",
                        "grade" : [
                            4,
                            8,
                        ],
                    },
                    {
                        "name": "sport",
                        "grade": [
                            14,
                            18,
                            16
                        ]
                    }
                ]
            }, 
            "_type": "student"
        }

学生可能拥有不同数量的订阅课程

我想:

  1. 知道如何分配班级数(1班学生人数,2班等)
  2. 每节课的次数(我知道所有可能的课程)
  3. 我已经看到metric aggregations是可能的,我想要做的是possible。但我是es的新手,我没有成功解决这个问题。

    愿任何人帮忙吗?

1 个答案:

答案 0 :(得分:0)

我建议不同地索引数据。有1个代表学生参加单一课程的文件。类似的东西:

{
  studentID: 123,
  studentName: "foo bar",
  classID: 111,
  classType: "physics"
}

这样您就可以更轻松地完成您希望进行的聚合。