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、本想通过命令行方式解决,鼓捣半天没有成功。