2016-07-22 4 views
0

나는 다른 필드에 필터링 후 필드에 집계를하는 ​​방법을 찾으려고 노력하고 있습니다. 그러나 Elastic 검색 문서는 쉽게 이해할 수 없습니다.필드 집계 및 elasticsearch에 합계를 반환

[ 
    { 
    a:'a1' 
    b:'b1' 
    c:120 
    d:12 
    }, 
    { 
    a:'a2' 
    b:'b1' 
    c:170 
    d:15 
    } 
    { 
    a:'a3' 
    b:'b2' 
    c:128 
    d:18 
    } 
    { 
    a:'a4' 
    b:'b1' 
    c:158 
    d:5 
    } 
] 

필수 집계 :

내 매핑 말할 수 있습니다

Return the sum of field "c", by selecting the docs with "b" where b=b1 and d is less than 13 

이 내 요구 사항이 아니라, 대답은 문서를 이해 날 수 있습니다.

답변

1

이을 시도해보십시오 집계 문서의 전체 집합에 일어나고

POST index/_search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "term": { 
      "b": "b1" 
      } 
     }, 
     { 
      "range": { 
      "d": { 
       "lt": 13 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "aggs": { 
    "total": { 
     "sum": { 
     "field": "c" 
     } 
    } 
    } 
} 
+0

을,하지만 난 용어 "B"와 "D"로 선택한 문서 필드 "C"의 합계를 원 –

+0

그게 무슨이다 위와 같습니다. 쿼리는 각각의 쿼리와 일치하는 필드가 'b'와 'd'인 문서 만 선택하고 집계는 해당 문서에서만 실행됩니다. 그것을 밖으로 시도하십시오. – Val

+0

{ "aggs"{ "총"{ "합"{ "필드", "C" }}} ....... 또한 상기 질의와 동일한 값을 반환. 나는 여기에서 여과를 계산할 수 없다. –