중첩 된 필드 및 집계에 대해 몇 가지 게시물을 볼 수 있지만 그 중 누구도 내 질문에 대답하지 않습니다. 그래서, 이것이 반복되는 질문이라면 도움을 주실 수있을 것입니다.ElasticSearch : 중첩 된 필드 및 집계
우리는 강의의 인덱스를 구축했습니다, 강의는 다음과 같은 특성을 가지고 :
강연 중 하나에 사람 (라이브) 또는 (온라인)- 여러 개의 챕터가 있습니다
- 각 장은 다른 강사 (예 : 양자 물리학 1 장은 5 명의 강사가 참여할 수 있으며 그 중 3 개는 온라인 상태 일 수 있으며 나머지 3 개는 온라인 상태 일 수 있습니다)
- 온라인 강의는 항상 한 항목 당 품질
당 장 당 강사는 대략 구조는 다음과 같다 :
{
"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"
]
}
]
}
]
}
]
}
이제 요구 사항은 라이브 강의에 대해서만 세부 가능한 첫 번째 챕터별로 그룹화 강의, 강사를 반환하고 모든 온라인을 반환하는 경우 강의 (강의 주제의 다른 메타 데이터와 함께)를 수행하는 가장 좋은 방법은 무엇입니까? 위의 예에서는 9 월 11 일에 Dr. Abraham Fisher와 Dr. Bob Fisher가 강의를 반환해야합니다.
inner_hits를 사용해 보았지만 분명히 집계가 허용되지 않습니다 (다음 오류가 발생 함).
"[nested] query does not support [aggs]"
추신 : 집계는 챕터 레벨이어야하며 강의 주제 (루트) 수준이 아니어야합니다.