有个需求是将es的一个date类型的字段改为string类型,经查阅资料发现es不支持直接修改字段类型,只能将原索引结构复制出来,然后单独修改某个字段的类型后,再去新建一个索引将这个结构填充进去,填充完复制原索引数据到新索引,进而使用新的索引(也可以删掉老的索引,将新的索引改名为之前的索引)。
以下是步骤:
1.本人用的双核浏览器,可以直接下载elasticsearch-head插件进而界面化,可以参照文章:
https://blog.csdn.net/Weixing108/article/details/127807515
2.复制出原来索引的结构:
全选完后只保留mappings部分和最外层大括号。
2.创建新的索引,并初始化索引结构:
https://ip地址:端口/新索引名称?include_type_name=true
请求方式:PUT,参数是索引的mapping信息,示例:
这种在postmoan等工具上也可以实现,其中include_type_name=true是必加的,不然验证不过去。
3.接下来就是复制老的索引数据到新的索引里:
https://ip地址:端口/_reindex
请求方式:post,参数:
{
"source": {
"index": "原来索引名称"
},
"dest": {
"index": "要copy数据到的目标索引名称"
}
}
示例图片:
以上就完成了。