elasticsearch原生支持date類型,json格式經過字符來表示date 類型。因此在用json提交日期至elasticsearch的時候,es會隱式轉換,把es認爲是date類型的字符串直接轉爲date類型。至於什麼 樣的字符串es會認爲能夠轉換成date類型,參考elasticsearch官網介紹https://www.elastic.co/guide/en /elasticsearch/reference/current/mapping-date-format.html。html
date類型是包含時區信息的,若是咱們沒有在json表明日期的字符串中顯式指定時區,對es來講沒什麼問題,可是若是經過kibana顯示es裏的數據時,就會出現問題,數據的時間會晚8個小時。因 爲kibana從es裏讀取的date類型數據,沒有時區信息,kibana會默認看成0時區來解析,可是kibana在經過瀏覽器展現的時候,會經過 js獲取當前客戶端機器所在的時區,也就是東八區,因此kibana會把從es獲得的日期數據減去8小時。這裏就會致使kibana常常遇到的「數據時間 延遲8小時」的問題。json
因此最佳實踐方案就是:咱們在往es提交日期數據的時候,直接提交帶有時區信息的日期字符串,如:「2016-07-15T12:58:17.136+0800」。瀏覽器
我在項目裏遇到時間不對的時候,時間差爲50分鐘,緣由是es服務器系統時間與我主機本地時間不相符,統一下時間就行了。
服務器