2017-09-26 4 views
0

나는 elasticsearch에서 쿼리를 실행하고 있습니다. 색인에 표시된 각 달에 대한 속성 "end_date_ut"에 대한 히트 수 (유형은 날짜 및 형식은 dateOptionalTime 임)가 있어야합니다. 그 때문에 date_histogram aggregation을 사용하고 있습니다. 단지 울부 짖는 소리date_histogram 집계에 크기를 두는 방법

내 쿼리 :

"hits": { 
    "total": 517478, 
    "max_score": 0, 
    "hits": [] 
    }, 
    "aggregations": { 
    "appli": { 
     "buckets": [ 
     { 
      "key_as_string": "2009-08-01T00:00:00.000Z", 
      "key": 1249084800000, 
      "doc_count": 0 
     }, 
     { 
      "key_as_string": "2009-09-01T00:00:00.000Z", 
      "key": 1251763200000, 
      "doc_count": 1 
     }, 
     { 
      "key_as_string": "2009-10-01T00:00:00.000Z", 
      "key": 1254355200000, 
      "doc_count": 2362 
     }, 
     { 
      "key_as_string": "2009-11-01T00:00:00.000Z", 
      "key": 1257033600000, 
      "doc_count": 5336 
     }, 
     { 
      "key_as_string": "2009-12-01T00:00:00.000Z", 
      "key": 1259625600000, 
      "doc_count": 7536 
     }, 
     { 
      "key_as_string": "2010-01-01T00:00:00.000Z", 
      "key": 1262304000000, 
      "doc_count": 8864 
     } 

문제는 내가 너무 많은 버킷 (결과)를 가지고있다 : 여기

GET inc/_search 
{ 
    "size": 0, 
    "aggs": { 
    "appli": { 
     "date_histogram": { 
     "field": "end_date_ut", 
     "interval": "month" 
     } 
    } 
    } 
} 

그리고 결과의 일부입니다. "용어 집계"를 사용할 때 크기를 설정할 수 있기 때문에 아무런 문제가 없지만 "date_histogram aggregation"을 사용하면 쿼리 결과에 제한을 두는 방법을 찾을 수 없습니다.

+0

'date_aggregation'이 실행되는 시간 간격을 제한하기 위해'range' 쿼리를 추가해야합니다. – Val

+0

좋은 해결책이지만 시간 간격을 제한하고 싶지는 않습니다. 20 가지의 첫 번째 결과 만 얻을 수있는 또 다른 방법이 있습니까? –

+1

'min_doc_count'를 사용하여 데이터가있는 버킷 만 포함 할 수 있습니다. 즉, 0 개의 문서가있는 버킷이 응답으로 되돌아 가지 않습니다. – Val

답변

0

데이터가있는 버킷 만 포함하려면 min_doc_count을 사용하는 것이 좋습니다. 즉, 0 개의 문서가있는 버킷이 응답에 다시 포함되지 않습니다. 당신이 할 수있는 경우

GET inc/_search 
{ 
    "size": 0, 
    "aggs": { 
    "appli": { 
     "date_histogram": { 
     "field": "end_date_ut", 
     "interval": "month", 
     "min_doc_count": 1   <--- add this 
     } 
    } 
    } 
} 

은 또한 통합이 실행되는 시간 간격을 억제하기 위해 range 쿼리를 추가 할 수 있습니다.