往ES写入数据时若没有创建mapping,es会根据插入数据的类型自动匹配mapping,当有类似设备号这类的长数字类型是,ES会将其映射成long,但是如果后续写入的数据中,有数据的该字段超过long的长度范围,写入程序会报错:
可以通过命令curl -XDELETE "http://host:port/urmtpinf"来查看 urmtpinf这个index的mapping信息,发现其中确实有报错字段为long
由于ES无法修改index的mapping,因此只能删除index后重建,并指定mapping,原先写入index的数据需要重新写入,具体操作如下:
1.删除索引
curl -XDELETE "http://host:porturmtpinf"
2.重新建立该索引
curl -XPUT "http://host:port/urmtpinf"
3.给该索引添加tupe和mapping
curl -XPOST "http://host:port/urmtpinf/doc/_mapping?pretty" -d '
"doc":{
{"properties":
(将原来查询到的mapping的properties中,long替换成text,然后写到这里)
}
}
'