0

제품이 ES에 저장되어 있으며 크기에 따라 집계하려고합니다. 나는 다음과 같은 행동을 디자인하고 싶다. 쿼리를 기반으로 용어 카운트를 수신하는 쿼리 외부의 각 용어에 대해서도.필터링 된 계수가있는 글로벌 용어 집계 - Elasticsearch 5

그래서 크기에 대한 질의 [ "S"는 "M은"] 내가 받고 싶습니다

:

S : 1
M : 1
L : 0

이 어떻게 든 수 있습니까?

는 여기에 내가 그 결과 다음과 같은 얻을 내 설정이다 :

S : 1
M : 1

그러나 L이 완전히 누락 된 것입니다.

PUT demo 
{ 
    "mappings": { 
     "product": { 
      "properties": { 
       "size": { 
        "type": "keyword" 
       } 
      } 
     } 
    } 
} 

PUT demo/product/1 
{ 
    "size": "S" 
} 

PUT demo/product/2 
{ 
    "size": "M" 
} 

PUT demo/product/3 
{ 
    "size": "L" 
} 

GET demo/_search 
{ 
    "size": 0, 
    "query": { 
     "bool": { 
     "must": [ 
      { 
       "terms": { 
        "size": [ 
        "S", 
        "M" 
        ] 
       } 
      } 
     ] 
     } 
    }, 
    "aggs": { 
     "size": { 
     "terms": { 
      "field": "size" 
     } 
     } 
    } 
} 

답변

0

필터를 사용할 수 있습니다.

{ 
    "size": 0, 
    "query": { 
     "bool": { 
      "must": [ 
       { "terms": { "field": "size" } } 
      ], 
      "filter": { 
       "terms": { "size": [ "S", "M"] } 
      } 
     } 
    }, 
    "aggs": { 
     "size": { 
      "terms": { "field": "size" } 
     } 
    } 
} 
+0

이 elasticsearch 5 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html –

+0

@JosefRousek I에서 작동하지 않는 것 내 대답을 편집했습니다. ES5에서 지금 다시 시도하십시오 – skal88

+0

노력해 주셔서 감사합니다. 그러나이 방법은 효과가 없습니다. 게시하기 전에 꽤 오랜 연구를 해왔습니다. 문제를 설명하는 데 문제가 있습니다. –