提问者:小点点

elasticsearch从1.7. x升级到5.2.x


将elasticsearch从1.7升级到5.2的正确方法是什么?

我尝试先将其升级到2.4版本并完成重新索引过程,然后我安装了elasticsearch v.5.2。当v.5.2在日志中启动时看到以下消息:

3)错误注入构造函数java. lang.IllegalStateException:索引[[logstash-2017.01.15/tk1-FBLGTQGl0vVW1xxPpg]]是使用版本[1.7.3]创建的,但最低兼容版本是[2.0.0-beta1]。在升级到5.2.2之前,它应该在Elasticsearch 2.x中重新索引。


共1个答案

匿名用户

查看官方留档,如果您正在运行Elasticsearch 1. x集群,您有两个选择:

  • 首先升级到Elasticsearch 2.4. x,重新索引旧索引,然后升级到5.x。
  • 创建一个新的5. x集群并使用reindex-from-Remote直接从1.x集群导入索引。

重新索引就位

重新索引旧(1. x)索引的最简单方法是使用Elasticsearch迁移插件。您需要先升级到Elasticsearch 2.3.x或2.4.x。

迁移插件中提供的重新索引实用程序执行以下操作:

  • 创建一个新索引,将Elasticsearch版本附加到旧索引名称(例如my_index-2.4.1),从旧索引复制映射和设置。新索引禁用刷新,副本数设置为0以有效重新索引。
  • 将旧索引设置为只读以确保没有数据写入旧索引。
  • 将所有文档从旧索引重新索引到新索引。
  • 将refresh_interval和number_of_replicas重置为旧索引中使用的值,并等待索引变为绿色。
  • 将旧索引上存在的任何别名添加到新索引。
  • 删除旧索引。
  • 使用旧索引名称向新索引添加别名,例如别名my_index指向索引my_index-2.4.1。

在此过程结束时,您将拥有一个新的2. x索引,可供Elasticsearch 5.x集群使用。

使用reindex从远程升级

如果您正在运行1. x集群并希望直接迁移到5.x而不首先迁移到2.x,则可以使用reindex-from-远程执行此操作。

您需要在现有的1. x集群旁边设置一个5.x集群。5.x集群需要有权访问1.x集群的RESTAPI。

对于要传输到5. x集群的每个1.x索引,您需要:

  • 使用适当的映射和设置在5. x中创建一个新索引。
  • 将refresh_interval设置为-1,将number_of_replicas设置为0,以便更快地重新索引。
  • 使用reindex-from-Remote将文档从1. x索引拉取到新的5.x索引中。如果在后台运行reindex作业(wait_for_completion设置为false),reindex请求将返回一个task_id,该task_id可用于监视任务API中reindex作业的进度:GET_tasks/TASK_ID。
  • 重新索引完成后,将refresh_interval和number_of_replicas设置为所需的值(默认值分别为30s和1)。
  • 新索引完成复制后,您可以删除旧索引。