0

nested 형식 필드 안에있는 keyword 형식 필드를 집계하고 싶습니다. 중첩 된 필드의 매핑은 다음과 같습니다 :탄성 검색 : 중첩 형식 필드 내부 필드 집계

"aggregations": { 
    "Nested_field": { 
     "aggregations": { 
      "Keyword_field": { 
       "terms": { 
        "field": "Nested_field.Keyword_field" 
       } 
      } 
     }, 
     "filter": { 
      "bool": {} 
     } 
    }, 
} 

그러나 이것은 정확한 집계를 반환하지 않습니다 :

"Nested_field" : { 
    "type" : "nested", 
    "properties" : { 
     "Keyword_field" : { 
      "type" : "keyword" 
     } 
    } 
} 

내가 집계 사용하고 쿼리의 일부는 다음과 같습니다. 기존 문서의 값이 Keyword_field이라도 쿼리는 0 개의 버킷을 반환합니다. 따라서 집계 쿼리에 잘못된 것이 있습니다. 누군가 내가 틀린 것을 찾도록 도와 줄 수 있습니까?

답변

2

중첩 된 경로를 제공해야한다고 생각합니다. 이것은 ES 5에서 작동했지만 "집계"vs "aggs"를 기반으로 6을 사용하는 것처럼 보입니다. 작동하지 않는 경우 알려 주시면이 답변을 삭제하겠습니다. 시도해보십시오.

{ 
    "aggregations": { 
     "nested_level": { 
      "nested": { 
       "path": "Nested_field" 
      }, 
      "aggregations": { 
       "keyword_field": { 
        "terms": { 
         "field": "Nested_field.Keyword_field" 
        } 
       } 
      } 
     } 
    } 
} 
+0

와우 !! 그것은 작동하지만 ... 하나의 질문 : 중첩 된 필드를 집계하기 위해 많은 힙 메모리가 필요합니까? – Rohanil

+0

나는 이것에 관해 너무 확신하지 않는다. 중첩 된 필드는 실제로 별도의 문서로 저장되며 중첩 된 노드를 추가하여 수행하는 작업은 이러한 별도의 문서를 찾는 방법과 위치를 알려줍니다. 나는 그것이 정상적인 집계보다 너무 많은 메모리 집약적 인 것이 아니라고 생각한다. 중첩 된 문서를 부모 문서에 조인하는 추가 단계가 있으므로 색인을 생성하는 방식과 같은 큰 문서처럼 보입니다. 그 외에도 많은 오버 헤드가 있다고 생각하지 않습니다. – wholevinski