2017-05-04 2 views
0

나는 부모 개체가 탄성 검색 - 집계

"properties": { 
    "id": { 
     "type": "integer" 
    }, 
    "schoolProgramAttribute": { 
     "type": "nested", 
     "properties": { 
      "disciplineId": { 
       "type": "integer" 
      }, 
      "programId": { 
       "type": "integer" 
      } 
     } 
    } 
} 

지금 기본적으로 특정 disciplineId가 중첩 된 배열에서 여러 번 반복 할 수 있습니다 아래와 같이 객체의 배열을 중첩 된 시나리오를 가지고있다. 요구 사항은 각 학문 분야의 모든 상위 개체 수를 계산하는 것입니다. 규율에 따라 그룹화하면 올바른 계산 수를 얻지 못하고 역 집계가 어떻게 도움이되는지 확신 할 수 없습니다. 우리가 부모 ID로 역 집계를 시도 할 때, 나는 항상 1의 수를 얻고 나는 올바른 방법을하고 있는지 확신하지 못합니다.

은 SQL 세계에서 그것은

select count(distinct id),DisciplineId from table group by disciplineid 

어떤 도움 같은 것을 이해할 수있을 것입니다.

+0

집계를 추가 할 수 있습니까? – jordivador

답변

0

먼저 당신이 disciplineId에 의해 중첩 된 terms 집계를 적용해야하고 그 안에 당신은 discipline 집계의 결과는 당신에게 각 disciplineId에 대한 항목의 수를 줄 것이다 reverse_nested

{ 
    "aggs": { 
     "nested": { 
      "nested": { 
       "path": "schoolProrgamAttribute" 
      }, 
      "aggs": { 
       "discipline": { 
        "terms": { 
         "field": "schoolProrgamAttribute.disciplineId" 
        }, 
        "aggs": { 
         "parent": { 
          "reverse_nested": {} 
         } 
        } 
       } 
      } 
     } 
    } 
} 

을 추가해야합니다 (그것은 내부의 중복을 배제하지 않는다 부모) parent은 원하는 값을 부여합니다 - 각 부모의 수 값

+0

물론 시도 할 것입니다. 고맙습니다 –