2015-08-27 16 views
1

我想分析我的數據庫中使用kibana和ES的時間序列。首先,我使用python API將數據編入ES。我使用的映射是:kibana無法加載時間序列數據

data= { 
    "settings":{ 
     "number_of_shards":1, 
     "number_of_replicas":1 
    }, 
    "mappings":{ 
     TYPE_NAME: { 
      "properties":{ 
       "timestamp":{"type":"date", "format":"YYYY-MM-DD HH:mm:ss", "store":"true"}, 
       "current":{"type":"float", "store":"true"}, 
       "bid_qty":{"type":"float", "store":"true"}, 
       "bid":{"type":"float", "store":"true"}, 
       "offer":{"type":"float", "store":"true"}, 
       "offer_qty":{"type":"float", "store":"true"}, 
       "change":{"type":"float", "store":"true"}, 
       "value":{"type":"string", "store":"true"} 
      }            
     } 
    }  
} 

然後創建一個索引,使用下面的代碼

es = Elasticsearch() 
response = requests.put('http://127.0.0.1:9200/'+INDEX_NAME+'/', data=json.dumps(data)) 

row_data = "" 
for row in rows: 
    row_data += '{"index":{"_id": "%s"}}\n' %row[0] 
    row_dict = {} 
    for i in range(1, len(row)): 
     row_dict[headers[i]] = str(row[i]) 
    row_data += json.dumps(row_dict) 
    row_data += "\n" 

response = requests.put('http://127.0.0.1:9200/'+INDEX_NAME+'/'+TYPE_NAME+'/_bulk', data=row_data) 

加載此數據後,當我嘗試在kibana添加此指標,它要求的是拋棄我的數據我的時間戳字段是數據類型,然後點擊創建。但在發現選項卡中,我無法找到我的數據。 有趣的是,我將時間戳字段設置爲字符串類型,並在ES中創建新索引,然後將其所有內容作爲非時間序列數據加載。但這對我來說沒有多大用處。請告訴我,如果我做錯了什麼。謝謝。

回答

0

繼續嘗試了一段時間後,我得到了一些正確的。所以基本上我沒有給出正確的格式。 "YYYY-MM-DD"應該是yyyy-MM-dd。但後來在使用kibana可視化數據時,在時間列中,它顯示了逗號分隔的兩個日期,一個在我的DB和另一個是UTC。這裏的主要問題是所有圖表都使用了我不想要的UTC時間。因此,在研究了更多之後,我使用了這種格式yyyy-MM-dd HH:mm:ss Z,並在插入日期時添加了+05:30(IST),即str(date) + " +05:30"。在此之後,在kibana中,在我的時間欄中,它顯示了兩個逗號分隔的事物,Invalid date, 2015-08-26 09:00:49。但是這些圖表是在當地時間製作的。我認爲我已經找到了一個臨時解決方案,如果有人想改善這個問題,我們非常歡迎並提供更多的信息。我認爲正確的解決方案應該是kibana中的時間欄只顯示一個日期,並且應該是我的本地插入日期。