2016-05-31 3 views
2

저는 elasticsearch를 처음 사용하고 filter 및 group by과 비슷한 기능을 수행하는 쿼리를 실행하려고합니다.ElasticSearch 집계 - 필터 및 그룹화

'용어'를 사용하여 필터를 사용하여 쿼리를 필터링하고 그룹을 실행할 수 있지만 둘 모두를 수행 할 수있는 쿼리를 작성할 수 없습니다.

{ 
    "size": 0, 
    "aggs": { 
    "group_by_country": { 
     "terms": { 
     "field": "country" 
     }, 
     "aggs": { 
     "average_balance": { 
      "avg": { 
      "field": "t.timing1" 
      } 
     } 
     } 
    } 
    } 
} 

모든 아이디어는 어떻게이 두 가지를 결합 할 수 있습니다 : 내가 사용했던 그룹화를 들어

{ 
    "size": 0, 
    "aggs": { 
    "group_by_city": { 
     "filter": { 
      "bool": { 
       "must": [ 
       { 
        "term": { 
        "account": "a" 
        } 
       }, 
       { 
        "term": { 
        "appName": "b" 
        } 
       }, 
       { 
        "range": { 
        "timestamp": { 
         "from": 1464713893304, 
         "to": 1465022700000 
        } 
        } 
       } 
       ] 
      } 
      }, 
     "aggs": { 
     "average_timing": { 
      "avg": { 
      "field": "t.timing1" 
      } 
     } 
     } 
    } 
    } 
} 

를 그룹화하지 않고 내 쿼리의

?

+0

작동하지 않는 쿼리를 표시하십시오. – AndreKR

답변

1

ElasticSearch의 데이터 하위 집합에 일부 분석을 제시 할 때 비슷한 문제가있었습니다. 나는 filteraggs을 결합하여이 문제를 해결했습니다. 귀하의 질의에 따라 다음과 같이 생각할 수 있습니다.

{ 
    "size": 0, 
    "filter": { 
     "bool": { 
      "must": [ 
       { 
        "term": { "account": "a" } 
       }, 
       { 
        "term": { "appName": "b" } 
       }, 
       { 
        "range": { 
         "timestamp": { 
          "from": 1464713893304, 
          "to": 1465022700000 
         } 
        } 
       } 
      ] 
     } 
    }, 
    "aggs": { 
     "group_by_country": { 
      "terms": { "field": "country" }, 
      "aggs": { 
       "average_balance": { 
        "avg": { 
         "field": "t.timing1" 
        } 
       } 
      } 
     } 
    } 
} 

귀하의 문제에 대한 이해가 적절하고 귀하에게 도움이되기를 바랍니다.

+0

그래, 그 일을 했어, 고마워! – danieln