2017-09-09 2 views
1

중첩 된 필드 및 집계에 대해 몇 가지 게시물을 볼 수 있지만 그 중 누구도 내 질문에 대답하지 않습니다. 그래서, 이것이 반복되는 질문이라면 도움을 주실 수있을 것입니다.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]" 
    

    추신 : 집계는 챕터 레벨이어야하며 강의 주제 (루트) 수준이 아니어야합니다.

  • 답변

    관련 문제