原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/reindex-upgrade-inplace.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/reindex-upgrade-inplace.html

原地重新索引 (Reindex in place)

你可以使用 Kibana 6.8 中的升级助手自动重新索引需要迁移到 7.7.1 的 5.x 索引。

要原地重新索引旧索引,请执行以下操作:

  1. 使用兼容 7.x 版本的 mapping 创建一个索引。
  2. refresh_interval 设置为 -1,将 number_of_replicas 设置为 0,以有效地重新索引。
  3. 使用 reindex API 将文档从 5.x 索引复制到新索引中。 在重新索引期间,你可以使用脚本对文档数据和元数据执行任何必要的修改。
  4. refresh_intervalnumber_of_replicas 重置为旧索引中使用的值。
  5. 等待索引状态变为 green
  6. 在单个 更新别名(update aliases) 请求中:

    1. 删除旧索引。
    2. 将旧索引名的别名添加到新索引中。
    3. 将所有绑定到旧索引中的别名添加到新索引中。

如果你使用了机器学习功能,并且你的机器学习索引是在 6.x 之前创建的,则必须暂时停止与机器学习作业和数据馈送(datafeed)相关的任务,并防止在重新索引期间打开新作业。 使用 设置升级模式(set upgrade mode) API停止所有数据馈送并关闭所有机器学习作业

如果你使用了 Elasticsearch 安全功能,在你重新索引 .security* 内部索引之前在 file 领域创建临时超级用户帐户是一个好主意。

  1. 在单个节点上,将临时超级用户帐户添加到 file 领域。 例如,运行 elasticsearch-users useradd 命令:

    bin/elasticsearch-users useradd <user_name> \
    -p <password> -r superuser
  2. 当重新索引 .security* 索引时使用这些凭据。 也就是说,使用它们登录 Kibana 并运行升级助手或者调用 reindex API。
  3. file 领域中删除临时超级用户帐户。 例如,运行 elasticsearch-users userdel 命令:

    bin/elasticsearch-users userdel <user_name>

更新信息请参考 基于文件的用户身份认证