概述
由于Elasticsearch域映射创建后不能随便删改,所以如果没有设计好就开始开发就可能出现域映射会有多余字段(我通常把域映射和字段当做一个东西),对于追求完美同学们心里总是不舒服的
以下测试是在kibana
错误索引域映射
{
"test" : {
"mappings" : {
"properties" : {
"err_field" : {
# 错误域映射(字段)
"type" : "text"
},
"name" : {
"type" : "keyword"
},
"time" : {
"type" : "double"
}
}
}
}
}
方法一
- 新建正确域映射的索引
# 新建索引
PUT /test_v5
# 新建域映射
POST /test_v5/_mapping
{
"properties": {
"name": {"type": "keyword"},
"time": {"type": "double"}
}
}
- 数据迁移
POST /_reindex
{
"source": {"index": "test"},
"dest": {"index": "test_v5"}
# 执行结果
{
"took" : 178,
#耗时时长
"timed_out" : false, # 是否超时
"total" : 4, # 总数据量(测试数据就用了4个)
"updated" : 0,
"created" : 4, # 在test_v5创建4条数据
"deleted" : 0,
"batches" : 1, # 批次(一次搞完,数据量较多时应该会分批迁移【猜的)
"version_conflicts" : 0, # 冲突数据数(被迁移索引有数据时可能会冲突【猜的)
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ]
}
- 删除旧索引
DELETE /test
- 貌似已经完成了,但最开始的索引名(test)和现在的索引名(test_v5)不一样了,如果想改回test,可以把test_v5当做旧索引,test当做新索引再操作一遍(重命名方法没找到,找到的朋友希望评论告诉我一下),另外就是可以考虑使用方法二
方法二
使用索引别名,这个没有具体操作只说下思路(有同学看不懂【或不想看懂】可以评论留言,我操作一波再来补充)
- 新建正确域映射的索引(同上)
- 数据迁移(同上)
- 对新索引创建索引别名;
POST /_aliases
{
"actions": [
{
"add": {
"index": "test_v5",
"alias": "alias_mid" # 可以把别名命名为旧索引名(看情况,【没实际测总感觉心里没底)
}
}
]
}
- 删除旧索引(同上)
最后
以上就是俭朴帅哥为你收集整理的Elasticsearch 删除多余域映射(字段)的全部内容,希望文章能够帮你解决Elasticsearch 删除多余域映射(字段)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复