Ich sehe ein paar Posts um verschachtelte Felder und Aggregation, aber keine von ihnen scheint meine Frage zu beantworten. Also, verzeihen Sie mir, wenn dies eine wiederholte Frage ist und jede Hilfe sehr geschätzt würde.ElasticSearch: Verschachtelte Felder und Aggregation
Wir haben einen Index von Vorlesungen gebaut und Vorträge haben folgende Eigenschaften:
- Ein Vortrag kann entweder in Person werden (live) oder pre-recorded (online)
- Jede Vorlesung kann mehrere Kapitel haben
- Jedes dieser Kapitel kann von verschiedenen Dozenten abgedeckt werden (Beispiel: Kapitel 1 der Quantenphysik kann durch fünf verschiedene Dozenten abgedeckt werden, und drei von ihnen kann unter Spannung stehen und die anderen beiden können online sein)
- Eine Online-Vorlesung hat immer einen Eintrag pro pro Qualität Dozent pro Kapitel
Etwa die Struktur ist wie folgt:
{
"topics": [
{
"id": "TOP1",
"chapters": [
{
"chapterId": 12345,
"availability": [
{
"type": "LIVE",
"lecturer": "Dr. Abraham Fisher",
"lectureChapterId": "861731",
"availableFrom": "2017-09-11 13:00:00",
"expiresAt": "2017-09-11 15:00:00",
"lecturerIds": [
"MON121",
"MEL122"
]
},
{
"type": "LIVE",
"lecturer": "Dr. Bob Fisher",
"lectureChapterId": "181751",
"availableFrom": "2017-09-11 20:00:00",
"expiresAt": "2017-09-11 22:00:00",
"lecturerIds": [
"MON122",
"MEL123"
]
},
{
"type": "LIVE",
"lecturer": "Dr. Bob Fisher",
"lectureChapterId": "181751",
"availableFrom": "2017-09-17 20:00:00",
"expiresAt": "2017-09-17 22:00:00",
"lecturerIds": [
"MON122",
"MEL123"
]
},
{
"type": "LIVE",
"lecturer": "Dr. Abraham Fisher",
"lectureChapterId": "861731",
"availableFrom": "2017-09-17 13:00:00",
"expiresAt": "2017-09-17 15:00:00",
"lecturerIds": [
"MON121",
"MEL122"
]
},
{
"type": "ONLINE",
"quality" : "HD",
"price" : 19.99,
"lecturer": "Dr. Catherine Fisher",
"lectureChapterId": "9127312",
"availableFrom": "2017-01-17 00:00:00",
"expiresAt": "2017-12-31 23:59:59",
"lecturerIds": [
"MON120",
"MEL120"
]
},
{
"type": "ONLINE",
"quality" : "SD",
"price" : 10.99,
"lecturer": "Dr. Catherine Fisher",
"lectureChapterId": "9127312",
"availableFrom": "2017-01-17 00:00:00",
"expiresAt": "2017-12-31 23:59:59",
"lecturerIds": [
"MON120",
"MEL120"
]
}
]
}
]
}
]
}
Nun, wenn die Anforderung nur die Details ersten verfügbaren Vortrag von Kapitel, Dozent für LIVE-Vorträge gruppiert zurückzukehren und alle Online-Rückkehr Vorträge (zusammen mit anderen Metadaten für das Vorlesungsthema), was ist der beste Weg, das zu tun? Im obigen Beispiel sollten die Vorträge von Dr. Abraham Fisher und Dr. Bob Fisher am 11. September zurückgegeben werden.
Ich habe versucht, mit inner_hits, aber anscheinend Aggregationen verhindert (ich bekomme den folgenden Fehler).
P.S: Die Aggregation muss auf einer Kapitelebene sein und nicht auf der Ebene des Vorlesungsthemas (root).