2012-06-02 31 views
5

我有一個時間字段的值是一樣的索引:Elasticsearch和時區

time: 2012-06-02T12:25:27+02:00 

然後我運行下面的查詢:

{ 
    "sort": { 
    "time": "desc" 
    }, 
    "query": { 
    "query_string": { 
     "query": "time:[2012-6-2T12:24:00Z TO 2012-6-2T12:26:00Z]", 
     "default_operator": "AND" 
    } 
    }, 
    "size": 30 
} 

即返回0命中,但如果我將查詢字符串移2小時,然後與當時的記錄匹配。所以,我很確定這是一個時區問題。閱讀我發現的文檔,我可以在查詢中放置一個「time_zone」:2,但是......它應該放在上一個查詢中的位置?我嘗試了很多選擇,但無法使其工作。

回答

6

您可能在直方圖數據面中看到了「time_zone」參數,這與此查詢不同。 query_string查詢不接受time_zone參數。我覺得這裏最簡單的解決方案將與所需的時區在您的查詢中替換「Z」:

{ 
    "sort": { 
    "time": "desc" 
    }, 
    "query": { 
    "query_string": { 
     "query": "time:[2012-6-2T12:24:00+02:00 TO 2012-6-2T12:26:00+02:00]", 
     "default_operator": "AND" 
    } 
    }, 
    "size": 30 
} 
+4

是否有指定查詢的外部或在查詢字符串比的不同部分時區的任何能力'時間:「搜索本身?我問,因爲我想保持查詢'time'字段中任何可能的日期格式(例如'yyyyDDD'T'HHmmssZ','HHmmss.SSSZ'等)的能力,但是然後讓它們全部指定在「+02:00」的時間段內。 –