由于ElasticSearch没有像mysql一样可以直接字段数据类型的方法,因此需要通过创建中间索引:data_index_1,备份数据到中间索引:data_index_1,然后删除原索引: data_index,重新创建正确数据类型索引:data_index,再把中间索引:data_index_1的数据备份到新创建索引:data_index。语句通过kibana的 dev_tools/console 执行。
操作步骤如下:
1. 创建一个中间索引 2. 向中间索引备份源索引的数据(mapping) 3. 查询确认数据是否copy过去 4. 删除有问题的索引 5. 重新创建同名的索引(★字段类型修改正确★) 6. 从中间索引还原到源索引的数据 7. 删除中间索引
获取索引mapping,可通过到Kibana查看索引的mapping,如图:
参考修改脚本,kibana执行:
# 1. 创建一个中间索引
#创建索引
PUT demo_metric_1/
# 创建Mapping
POST demo_metric_1/type/_mapping
{
"type": {
"properties": {
"log_time_date": {
"type": "date",
"format": "epoch_millis"
},
.....
}
}
}
# 2. 向中间索引备份源索引的数据
# 重建索引
POST _reindex
{
"source": {
"index": "demo_metric"
},
"dest": {
"index": "demo_metric_1"
}
}
# 3.查询确认数据是否copy过去
GET /demo_metric/type/_search
GET /demo_metric_1/type/_search
# 4.删除有问题的索引
# 删除有问题的索引
DELETE demo_metric
# 5.重新创建同名的索引(★字段类型修改正确★)
#创建索引
PUT demo_metric/
# 创建Mapping
POST demo_metric/type/_mapping
{
"type": {
"properties": {
"log_time_date": {
"type": "date",
"format": "epoch_millis"
},
.....
}
}
}
# 6. 从中间索引还原到源索引的数据
# 重建索引
POST _reindex
{
"source": {
"index": "demo_metric_1"
},
"dest": {
"index": "demo_metric"
}
}
# 7. 删除中间索引
DELETE demo_metric_1
感谢你的阅读,如果对你有帮助,请支持我!请点[推荐] 如果有意见或建议,欢迎留言交流! 欢迎转载,请保留出处,冰慧感谢你的关注与支持!