由于Elasticsearch域映射创建后不能随便删改,所以如果没有设计好就开始开发就可能出现域映射会有多余字段(我通常把域映射和字段当做一个东西),对于追求完美同学们心里总是不舒服的
以下测试是在kibana
错误索引域映射
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{ "test" : { "mappings" : { "properties" : { "err_field" : { # 错误域映射(字段) "type" : "text" }, "name" : { "type" : "keyword" }, "time" : { "type" : "double" } } } } }
方法一
- 新建正确域映射的索引
复制代码
1
2
3
4
5
6
7
8
9
10
11# 新建索引 PUT /test_v5 # 新建域映射 POST /test_v5/_mapping { "properties": { "name": {"type": "keyword"}, "time": {"type": "double"} } }
- 数据迁移
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26POST /_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" : [ ] }
- 删除旧索引
复制代码
1
2DELETE /test
- 貌似已经完成了,但最开始的索引名(test)和现在的索引名(test_v5)不一样了,如果想改回test,可以把test_v5当做旧索引,test当做新索引再操作一遍(重命名方法没找到,找到的朋友希望评论告诉我一下),另外就是可以考虑使用方法二
方法二
使用索引别名,这个没有具体操作只说下思路(有同学看不懂【或不想看懂】可以评论留言,我操作一波再来补充)
- 新建正确域映射的索引(同上)
- 数据迁移(同上)
- 对新索引创建索引别名;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12POST /_aliases { "actions": [ { "add": { "index": "test_v5", "alias": "alias_mid" # 可以把别名命名为旧索引名(看情况,【没实际测总感觉心里没底) } } ] }
- 删除旧索引(同上)
最后
以上就是俭朴帅哥最近收集整理的关于Elasticsearch 删除多余域映射(字段)的全部内容,更多相关Elasticsearch内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复