场景:在创建的时候使用string,进入es后是keyword类型,在使用kibana的时候不能使用它做视图
在网上找了很多,不能更改字段类型,有些很麻烦,看这个比较简单
其实就是创建一个新的index,再把老index导入进去
话不多说上干货
老的index是qzwl_dcs
数据json是
{
"_index": "qzwl_dcs",
"_type": "qzwl_dcs",
"_id": "000739974655122-1420191908",
"_version": 1,
"_score": 1,
"_source": {
"date": "2019-04-29T03:32:17.000+0800",
"area": "2",
"kks": "10MKF88CP101",
"station": "2",
"name": "1#机转子线圈进水压力1",
"moduleName": "转子线圈进水口",
"moduleId": "72",
"value": "203.55"
},
"fields": {
"date": [
"2019-04-28T19:32:17.000Z"
]
}
}
value字段现在是keyword类型,想把他变成double类型
先创建一个新的index,type名称和qzwl_dcs一样
curl -H 'Content-Type: application/json' -XPUT "http://192.168.31.203:9200/dcs_new"
curl -H 'Content-Type: application/json' -XPOST "http://192.168.31.203:9200/dcs_new/qzwl_dcs/_mapping?pretty" -d '
{
"qzwl_dcs": {
"properties": {
"value": {
"type": "double",
"store": "true",
"ignore_malformed": "true"
}
}
}
}
"ignore_malformed"是设置允许插入其他类型 即忽略类型异常
因为我的value中有null字符串,一开始没加,报错
加上"ignore_malformed"以后,导入的数值是null时,value一般是空
下面开始导数据
curl -X POST "localhost:9200/_reindex" -H 'Content-Type: application/json' -d'
{
"source": {
"index": "qzwl_dcs"
"size": 5000
},
"dest": {
"index": "dcs_new"
"routing": "=cat"
}
}'
注意 : size代表每次导入数据量,可以适当更改,这个的优化也是要有的,否则会很慢
优化可以看下边连接
链接