Elasticsearch 在实时系统上从 0.90.7 升级到 1.7.1

Elasticsearch upgrade from 0.90.7 to 1.7.1 on live system

所以我在单个服务器上有一个相当简单的 Node.js 应用程序 运行,使用 mongoDB 作为主数据库,使用 elasticsearch 作为 "replica set",只有搜索相关在 ES 中索引的字段。 我需要升级,因为旧版本与以下划线开头的字段(例如“_id”)冲突。

有没有一种方法可以升级 elasticsearch,几乎不需要停机时间,也不会退回到 mongoDB?另外,在这种情况下备份 elasticsearch 的正确方法是什么?如果出现问题,恢复备份的步骤是什么?

TLDR:备份然后在这些版本之间升级的正确方法是什么?

我绝对不会在现场这样做。 而且我怀疑它是否真的可行,因为在节点之间的数据序列化方面,0.90 与 1.0 不兼容。

此外,我想您的 JVM 也需要更新。

关于备份,你应该:

  • 停止索引
  • 刷新剩余操作
  • 可能优化索引
  • 复制每个索引的每个分片(例如 rsync)

我的 2 美分。

由于你目前拥有的数据量不是很大,也许解决方案是建立一个全新的 1.7 集群,在其中索引你的数据,然后打开开关,即你让你的节点应用程序指向到新的 1.7 集群而不是旧的 0.90.7 集群。这应该可以解决问题。

注意:理想情况下,ES 1.7 需要 Java 8,但也需要 supports Java 1.7.0_55 or later,因此对于 1.7。0_79 你最好继续 Java 前线。