本地英文版地址: ../en/reindex-upgrade-remote.html
可以使用 从远程重新索引 将索引从旧集群迁移到新的 7.7.1 集群。 这使你能够在不中断服务的情况下从 6.8 之前的集群迁移到 7.7.1。
Elasticsearch 提供向后兼容性支持,使索引可以从以前的主要版本升级到当前的主要版本。 跳过主要版本意味着你必须自己解决任何一个向后兼容性的问题。
Elasticsearch 不支持跨主要版本的向前兼容性。 例如,不能从 7.x 集群重新索引到 6.x 集群。
如果你使用了机器学习功能,并且正在从 6.5 或更低版本的集群中迁移索引,则作业和 数据馈送(datafeed) 配置信息不会存储在索引中。 必须在新集群中重新创建机器学习作业。 如果是从 6.6 或更高版本的集群迁移,最好暂时停止与机器学习工作和数据馈送(datafeed)相关的任务,以防止不同的机器学习索引之间的不一致,因为索引是在略微不同的时间索引的。 使用 设置升级模式(set upgrade mode) API 或 停止所有数据馈送并关闭所有机器学习作业。
迁移索引的操作步骤:
-
设置一个新的 7.7.1 集群,并将现有集群添加到
elasticsearch.yml
中的reindex.remote.whitelist
。reindex.remote.whitelist: oldhost:9200
新集群不必一开始就完全横向扩展。 当你迁移索引并将负载转移到新集群时,可以向新集群添加节点,也可以从旧集群中删除节点。
-
对于需要迁移到新集群的每一个索引:
-
用合适的 mapping 和 setting 创建一个索引。
将
refresh_interval
设置为-1
,将number_of_replicas
设置为0
,以便更快地重新索引。 -
使用
reindex
API 将文档从远程索引拉到新的 7.7.1 索引: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
在后台运行重新索引作业,则重新索引请求将返回一个task_id
,你可以使用 task API 来监视重新索引作业的进度:GET _tasks/TASK_ID
。 -
当重新索引作业完成时,将
refresh_interval
和number_of_replicas
设置为所需的值(默认设置为30s
和1
)。 -
一旦重新索引完成,新索引的状态为
green
,你就可以删除旧索引。
-
用合适的 mapping 和 setting 创建一个索引。
将