Я использую elasti c search 6.4.
У меня есть документ класса со структурой, подобной этой, где у меня есть подробная информация о классе со списком учителей и силой этого класса. Роль учителя может быть ЛЕКТОР для одного класса и GUEST_LECTURER для другого. В основном это то, что я пытаюсь найти. Учитывая учитель_id, я хочу знать
- , сколько классов он преподает в качестве лектора и для каждого диапазона силы (<5, <50, <20, <100,> 100)
- Сколько классов он преподает как GUEST_LECTURER и для каждого диапазона силы (<5, <50, <20, <100,> 100). Любой
{
"id": "1",
"teachers": [{
"id": 5,
"name": "Gaurav"
"role": LECTURER
}, {
"id": 4,
"name": "Ranjith"
"role": GUEST_LECTURER
}],
"strength": 10
}
Я могу выполнить агрегацию диапазона с запросом. Но не могу найти количество документов по каждой роли
{
"query": {
"nested" : {
"path" : "teachers",
"query" : {
"bool" : {
"must" : [
{ "term" : {"teachers.id" : 5} }
]
}
}
}
},
"aggs": {
"classes_by_strength" : {
"range" : {
"field" : "strength",
"ranges" : [
{ "to" : 5 },
{ "from" : 5, "to" : 21 },
{ "from" : 21, "to": 51 },
{"from":51, "to": 101},
{"from": 101}
]
}
}
}
}
Не могли бы вы посоветовать мне, какой тип агрегирования лучше всего я могу использовать для этого?