關於elasticsearch和kibana的時區和日期問題


  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。

  date類型是包含時區信息的,如果我們沒有在json代表日期的字符串中顯式指定時區,對es來說沒什么問題,但是如果通過kibana顯示es里的數據時,就會出現問題,數據的時間會晚8個小時。因 為kibana從es里讀取的date類型數據,沒有時區信息,kibana會默認當作0時區來解析,但是kibana在通過瀏覽器展示的時候,會通過 js獲取當前客戶端機器所在的時區,也就是東八區,所以kibana會把從es得到的日期數據減去8小時。這里就會導致kibana經常遇到的“數據時間 延遲8小時”的問題。

  所以最佳實踐方案就是:我們在往es提交日期數據的時候,直接提交帶有時區信息的日期字符串,如:“2016-07-15T12:58:17.136+0800”。

 

  我在項目里遇到時間不對的時候,時間差為50分鍾,原因是es服務器系統時間與我主機本地時間不相符,統一下時間就好了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM