2017-02-01 3 views
0

1 개월 동안 1000 개의 날짜를 말하는 데이터 세트가 있습니다. 이 날짜 필드를 기반으로하는 집계를 수행하고 싶지만 간격으로 구분 된 소수의 샘플 만 (예 : 주) 구분하고 싶습니다.elasticsearch의 샘플에서 데이터 세트 선택

예 : 1 - dec에서 30 - dec까지의 날짜의 경우 1 dec, 8 dec, 15 dec, 22 dec & 29 dec. 추신 : 여기에 날짜 히스토그램을 그룹으로 사용하고 싶지 않습니다. 데이터를 주어진 간격으로 넣으십시오. 위의 예에서 1-7, 8-15 등의 양동이를 형성합니다.

나는 샘플러 집합을 찾아 보았고 스크립트를 제공해야합니다. 필자는 샘플을 픽업하여 해당 샘플을 하위 집계에 제공하는 방식으로 스크립트를 작성해야 하는지를 파악할 수 없었습니다.

+0

단순히 'date_histogram' 집계를 샘플링하려는 날짜 이외의 다른 날짜를 필터링하는 필터로 제한하지 않는 이유는 무엇입니까? – Val

+0

내가 말했듯이, 날짜 히스토그램은 ** 필터링 **이 아닌 ** 그룹 **이 될 것입니다. 예를 통해 당신의 요점을 증명할 수 있습니까? –

답변

0

다른 방법이 있습니다.

{ 
    "aggs": { 
    "5_days": { 
     "filter": { 
     "filter": { 
      "bool": { 
      "minimum_should_match": 1, 
      "should": [ 
       { 
       "range": { 
        "date": { 
        "from": "2016-12-01T00:00:00.000Z", 
        "to": "2016-12-02T00:00:00.000Z" 
        } 
       } 
       }, 
       { 
       "range": { 
        "date": { 
        "from": "2016-12-08T00:00:00.000Z", 
        "to": "2016-12-09T00:00:00.000Z" 
        } 
       } 
       }, 
       { 
       "range": { 
        "date": { 
        "from": "2016-12-15T00:00:00.000Z", 
        "to": "2016-12-16T00:00:00.000Z" 
        } 
       } 
       }, 
       { 
       "range": { 
        "date": { 
        "from": "2016-12-22T00:00:00.000Z", 
        "to": "2016-12-23T00:00:00.000Z" 
        } 
       } 
       }, 
       { 
       "range": { 
        "date": { 
        "from": "2016-12-29T00:00:00.000Z", 
        "to": "2016-12-30T00:00:00.000Z" 
        } 
       } 
       } 
      ] 
      } 
     } 
     }, 
     "aggs": { 
     "samples": { 
      "date_histogram": { 
      "field": "date", 
      "interval": "day" 
      } 
     } 
     } 
    } 
    } 
} 

두 번째 방법이 더 간결 만 선택한 날짜와 date_range aggregation를 사용하여 요약된다 :

그 중 하나는 원하는 날짜를 선택하는 필터에 의해 속박 date_histogram 집계를 사용하는 것입니다
{ 
    "aggs": { 
     "range": { 
      "date_range": { 
       "field": "date", 
       "ranges": [ 
        { "from": "2016-12-01T00:00:00.000Z", "to": "2016-12-02T00:00:00.000Z" }, 
        { "from": "2016-12-08T00:00:00.000Z", "to": "2016-12-09T00:00:00.000Z" }, 
        { "from": "2016-12-15T00:00:00.000Z", "to": "2016-12-16T00:00:00.000Z" }, 
        { "from": "2016-12-22T00:00:00.000Z", "to": "2016-12-23T00:00:00.000Z" }, 
        { "from": "2016-12-29T00:00:00.000Z", "to": "2016-12-30T00:00:00.000Z" } 
       ] 
      } 
     } 
    } 
} 
+0

행운이 있나요? – Val

+0

첫 번째 옵션이 좋아 보이며 작동해야합니다. 그냥 빠른 질문, 왜 ** 간격 = 매일 ** ** 주간 ** ** 사용 했습니까? 차이가 있습니까? –

+0

시원하고 기쁜 데 도움이되었습니다. '매일'이라고 말하면 응답 시간은 단 하루 만 원하기 때문입니다. – Val