elastic search 日期爲string類型致使視圖沒法展現時間的解決辦法

嘗試將結構化的json數據發送到es(elastic search)上,而後建立視圖,這樣就能以小時維度查看數據,直接使用post發送到es後,建立索引,結果提示 沒有date類型的字段(field)。通過一番搜索和請教同事同窗,最後嘗試以下方法解決:json

刪除原有的索引,而後在發送數據到ES前的時候先 發送以下請求(es 5.0版本):app

http://yourhost.com/yourindex/   發送post 或者put請求,請求內容post

{
  "mappings": {
    "你的type 好比log": {
      "properties": {
        "時間戳字段名稱 log_time": {
          "type": "date", "format": "yyyy-MM-dd HH:mm:ss"
        }
      }
    }
  }
}

這樣能夠指定你的log_time 爲date類型 。spa

而後就能夠發送帶着這個log_time  的請求到 es中,而後在kibana中建立index索引,刷新索引便可看到相關field。(數字和字符串爲推斷類型) 3d

這個時候可自動刷新找到 datefield code

此時查看索引的類型,log_time 就是date類型:
orm

 

 

 

而後便可建立對應的視圖,選擇x軸爲date histogram類型的fied log_timeblog

 發送的完整的json請求示例:索引

 {"vs_imp": 0, "vs_bid": 0, "mv_cost": 0.0, "mv_revenue": 0.0, "mv_bid": 0, "vs_cost": 0.0, "mv_imp": 0, "vs_revenue": 0.0, "vs_request": 14488636, "log_time": "2017-04-14 12:00:00", "mv_request": 960607}字符串

 

 

如上便解決 字符串時間致使x軸沒法顯示日期的問題。

 

其餘問題: 

1, 數據發送後沒法使用put請求進行修改

解決辦法:發送數據的時候須要指定 index/type/:id  (例如id爲年月日小時來作到指定id 之後用put更新 )

2,  提示Saved 「field」 parameter is now invalid. Please select a new field "
解決辦法:和發送的數據有關,檢查數據中是否缺乏關鍵字段 好比時間戳

3, kibana上的曲線時間比數據實際時間多8個小時(版本 5.3)

解決辦法:對發送的數據中的時間戳減去8個小時(GMT0),kibana會自動加8個小時。

相關文章
相關標籤/搜索