2017-03-06 4 views
0

집계 기능을 탄력적으로 사용할 때 우리는 다시 집계하는 필드의 값을 얻지 만 해당 필드에 대한 설명을 얻고 자합니다. 우리는 API의 다른 부분이 나중에 사용하기 때문에 을 사용해야합니다. 예를 들어 는 : 우리의 데이터는 다음과 같습니다Elasticsearch로 집계 할 때 설명 얻기

우리는 우리의 응답이 보이는 sectors.id을 통해 집계
[{ 
    "id":"123" 
    "sectors":[{ 
    "id":"sector-1", 
    "name":"Automotive" 
    }] 
}, 
{ 
    "id":"123" 
    "sectors":[{ 
    "id":"sector-2", 
    "name":"Biology" 
    }] 
}] 

: sectors.name을 얻을 수있는 방법뿐만 아니라 결과에 키가 있습니까

"aggregations": { 
    "sector": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
     { 
      "key": "sector-2", 
      "doc_count": 19672 
     }, 
     { 
      "key": "sector-1", 
      "doc_count": 11699 
     }] 
     } 
    } 

?

답변

0

sectors은 중첩 된 필드 여야합니다. 이제 섹터 이름이 섹터 ID마다 고유하다고 가정합니다.

당신은 관련 키를 알아 내기 위해 sub-aggregations를 사용할 수 있습니다

GET _search 
{ 
    "size": 0, 
    "aggs": { 
    "sectors": { 
     "nested": { 
     "path": "sectors" 
     }, 
     "aggs": { 
     "sector_id": { 
      "terms": { 
      "field": "sectors.id" 
      }, 
      "aggs": { 
      "sector_name": { 
       "terms": { 
       "field": "sectors.name" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
}