python 往 elasticsearch 存入數據時,經常會報莫名其妙的解析錯誤,大多是因為傳入的數值與字段類型不匹配有關。
經過反復摸索,總結的處理經驗如下:
1、首先調整好傳入數據字典的字段格式
data = { "region":"cn", "env":"dev", "product":"reliability", "service":"devops", "objectType":"ec2", "endpoint":"cn-dev-reliability-devops-ec2-172.31.116.5", "metric":"tcp_syn_sent", "value":"1", "timestamp":t, "starttime":t, "endtime":t, "step":60, "counterType":"COUNTER", "tags":"{}", "dataSource":"transfer", "kinesis":"true" } #es.indices.delete(index='kinesis-2018.06.28', ignore=[400, 404]) es.index(index="kinesis-2018.06.28", doc_type="kinesisdata", body=data)
2、比如data中的timestamp、starttime、endtime時間類型,如果已經存入整數數值或者字符串數值,想要修改為date類型,存入時會報錯。處理方法是,登錄kibana界面,刪除索引。
3、執行上面1步驟里面的腳本,進行數據保存
4、再一次進入kibana 重新創建索引,這時候就可以看到字段類型被修改過來了。
注釋:
1、主要是修改字段前,要從kibana界面中刪除索引,然后保存數據字段類型就會根據所傳入的數值類型進行配置。當再次在kibana配置索引后就可以看到對應的字段類型了。
2、本想通過命令行方式解決,鼓搗半天沒有成功。