2015-10-27 78 views
0

爲什麼我的查詢包含從日期到日期的過濾器,但是使用日期直方圖聚合時,從日期到日期範圍(有時)開始間隔。 我的查詢從2015-01-01過濾到2015-01-31,間隔開始日期必須在範圍內2015-01-012015-01-31,但開始日期我的結果是2014-12-31。我如何定義2015-01-012015-01-31範圍內的開始日期。 date histogramElasticSearch日期直方圖間隔

我的完整的查詢:

{ 
    "size": 0, 
    "aggs": { 
    "cluster": { 
     "terms": { 
     "field": "cluster" 
     }, 
     "aggs": { 
     "histogram_Log": { 
      "date_histogram": { 
      "field": "actionTime", 
      "interval": "1800m", 
      "format": "dd/MM/YYYY hh:mm:ss" 
      }, 
      "aggs": { 
      "typelog": { 
       "terms": { 
       "field": "typeLog" 
       } 
      } 
      } 
     } 
     } 
    } 
    }, 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "bool": { 
       "must": [ 
        { 
        "match_all": {} 
        }, 
        { 
        "range": { 
         "actionTime": { 
         "lte": "2015-01-31T00:00:00.000", 
         "gte": "2015-01-01T00:00:00.000" 
         } 
        } 
        } 
       ] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

回答

1

使用以下格式HH代替。您正在使用12小時制而不是24小時制的hh

"format": "dd/MM/YYYY HH:mm:ss" 

UPDATE

鑑於你的1800m間隔,您還需要指定這個偏移

"offset": "1d" 
+0

它隻影響數據格式結果。我需要從日期到日期範圍內的開始日期間隔,如果我每年更改範圍(2015-01-01至2015-12-31),則開始日期時間間隔將爲2014-12-21。 –

+0

好的,從你給出的例子來看,這並不清楚,但我仍然很難相信你會得到超出指定範圍的日期。爲什麼你有30小時(即1800米)的間隔? – Val

+0

從日期到日期(24間隔),我需要24天的部分天數 –

0

你已經在你的結果突出顯示的時間戳是不是一個文件的時間戳,這是你第一桶的開始。

您的第一桶水從2014年12月31日00:00:00至2015年1月1日06:00:00。

您已過濾查詢以僅返回時間戳晚於01/01/2015 00:00:00的文檔,但由於該時間早於01/01/2015 06:00:00,因此您的文檔可能屬於你的第一桶。

如果您還想強制您的存儲桶從01/01/2015 00:00:00開始,那麼您將需要在直方圖聚合中將其指定爲extended_bounds.min

+0

謝謝福勒,我忘了指定time_zone –

0

謝謝你的提問Code.I解決它。我刪除了一些代碼形成模板code.so我沒有這個代碼work.this是「date_histogram =>日期範圍」非常簡單的模板就可以了

 var queryOptions = 
      { 
     "aggs": { 
     "all_hours": { 
      "date_histogram": { 
       "field": "stamp", 
       "interval": "1d", 
       "format": "dd/MM/YYYY" 
         } 
        } 
      }, 
      "query": { 
     "filtered": { 
     "filter": { 
      "bool": { 
      "must": [ 
       { 
       "bool": { 
        "must": [ 
        { 
         "match_all": {} 
        }, 
        { 
         "range": { 
         "stamp": { 
          "lte": "2016-10-20", 
          "gte": "2016-05-01" 
         } 
         } 
        } 
        ] 
       } 
       } 
      ] 
      } 
     } 
     } 
    } 
    } 
`