2014-04-30 4 views
1

쿼리로 설명하는 것이 더 쉬울 것이라고 생각합니다. 내 쿼리를 살펴 : 이것은 아래의 결과로 날을 반환elasticsearch는 하위 집합으로 집계 버킷을 제외합니다. doc_count

GET _search 
{ 
    "aggs": { 
     "group_by_app": { 
     "terms": { 
      "field": "application" 
     } 
     }, 
     "aggs": { 
     "installs": { 
      "filter": { 
       "fquery": { 
        "query": { 
        "match": { 
         "action": "install" 
        } 
        }, 
        "_cache": true 
       } 
      } 
     }, 
     "launches": { 
      "filter": { 
       "fquery": { 
        "query": { 
        "match": { 
         "action": "launch" 
        } 
        }, 
        "_cache": true 
       } 
      } 
     } 
     } 
    } 
} 

:

"aggregations": { 
     "apps": { 
     "buckets": [ 
      { 
       "key": "app1", 
       "doc_count": 2313, 
       "launches": { 
        "doc_count": 0 
       }, 
       "installs": { 
        "doc_count": 48 
       } 
      }, 
      { 
       "key": "app2", 
       "doc_count": 5, 
       "launches": { 
        "doc_count": 0 
       }, 
       "installs": { 
        "doc_count": 0 
       } 
      }, 
     ] 
    } 
} 

를 이제 알 경우, 설치하고 발사 APP2 모두 0이다. 나는 하위 집계를 모두 출시 및 설치 횟수 내가 min_doc_count을보고 내 사건에 대한 비슷한 할 수 있었다면 궁금 해서요 0

을 경우 결과에 표시 키 = "APP2"에 대한 버킷을 원하지 않는다 ?

[편집] : 제가 시도 할 수있는 다른 생각은 가능한 모든 "작업"에 대해 집계 "group_by_app"대신 "작업"= "설치"또는 " 액션 "="발사 ". 그래서 기본적으로 버킷 집합은 "action"= "launch"또는 "install"이상이며, 하위 집계는 기본적으로 쿼리와 같습니다. 버킷 집계를 통해 min_doc_count를 수행하여 하위 집계 결과를 표시하지 않을 수 있습니다. 그러나 집계는 용어/용어 또는 필터 만 허용하며 둘 다 허용하지는 않습니다. 누군가가 그것을 달성하기위한 또 다른 방법을 제안 할 수 있다면 큰 도움이 될 것입니다!

+0

: 설치 "와"시작 "하위 집합 0

을 여기에 전체 쿼리의 응용 프로그램"둘 경우 물통을 ""다음 표시되지 않습니다 버킷 집계를 통해 min_doc_count = 1을 " 'min_doc_count'에 대해 언급 해 주셔서 감사합니다. – sjngm

답변

1

나는 그것이 그렇게 어렵지 않다는 것을 깨달았다. 집계를 필터링하는 대신 "쿼리"를 사용하여 집계 할 문서를 제한 할 수 있습니다. 따라서 모든 "작업"이있는 모든 "응용 프로그램"에 대한 모든 문서를 집계하는 대신 "작업"= "설치"또는 "작업"= "시작"이라는 두 가지 "작업"만으로 모든 "응용 프로그램"에 대한 문서를 집계합니다

GET _search 
{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "bool": { 
        "must": [ 
         { 
          "fquery": { 
          "query": { 
           "match": { 
            "action": "install OR launch" 
           } 
          }, 
          "_cache": true 
          } 
         } 
        ] 
       } 
      } 
     } 
    }, 
    "aggs": { 
     "group_by_app": { 
     "terms": { 
      "field": "application" 
     } 
     }, 
     "aggs": { 
     "installs": { 
      "filter": { 
       "fquery": { 
        "query": { 
        "match": { 
         "action": "install" 
        } 
        }, 
        "_cache": true 
       } 
      } 
     }, 
     "launches": { 
      "filter": { 
       "fquery": { 
        "query": { 
        "match": { 
         "action": "launch" 
        } 
        }, 
        "_cache": true 
       } 
      } 
     } 
     } 
    } 
} 
+0

이것은 특정 유스 케이스에서 작동하지만 서브 그룹에 다른 min_doc_count에 따라 버킷을 표시하지 않으면 작동하지 않습니다. – bagi

관련 문제