一、概述
ES升级后或者数据需要迁移,需要重建索引
这个只是个官网的翻译,具体在做的时候会详细讲解
参考链接:
- 本地重建
https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-inplace.html - 远程重建
https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-remote.html
二、Reindex in place 本地重建索引
1、可以用Upgrade Assistant(Kibina6.8)重建索引
2、手工重建索引
- 新建索引,并指定mappings
- 将refresh_interval 设置为 -1,number_of_replicas 设置为
- 使用reindex API
参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html - 将refresh_interval 和 number_of_replicas 设置为原来的值
- 等待同步完毕,状态变为 green
三、Reindex from a remote cluster 远程重建索引
1、新建一个集群,并添加到需要拉取的数据的老集群中
修改elasticsearch.yml:reindex.remote.whitelist: 老集群的IP:9200
2、针对每一个index的操作
- 在新集群中新建索引并指定mappings,将 refresh_interval 设置为-1,number_of_replicas 设置为0
- 使用reindex API将数据搬过来
POST _reindex
{
"source": {
"remote": {
"host": "http://oldhost:9200",
"username": "user",
"password": "pass"
},
"index": "source",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "dest"
}
}
如果将wait_for_completion设置为false,则同步会在后台进行,可以通过下面的url查询这个状态:TASK_ID是执行后返回的
GET _tasks/TASK_ID
- 还原refresh_interval(默认为30s) 及 number_of_replicas (默认为1)
- 同步完毕后,并且状态是green,就可以删除旧的索引
网友评论