2017-03-02 225 views
1

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

我试着先将它升级到2.4版,并完成reindex程序,然后我安装了elasticsearch v.5.2。当v.5.2在日志开始看到这个消息:

3)错误喷射构造,java.lang.IllegalStateException:本 指数[[logstash-2017年1月15日/ TK1-FBLGTQGl0vVW1xxPpg]用 创建版本[1.7.3],但最小兼容版本是[2.0.0-beta1]。 在升级到 之前,应该在Elasticsearch 2.x中重新编制索引。5.2.2。

+0

你如何做reindex? – yershalom

+0

我使用了两个查询:'curl -XPOST'http:// localhost:9200/_reindex' to reindex like like this article [link](https://www.elastic.co/guide/en/elasticsearch/reference/current /docs-reindex.html),然后我删除旧的索引。 –

回答

1

望着official documentation,如果您运行的是Elasticsearch 1.x的集群,你有两个选择:

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

Reindex in place

重新索引老(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。

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

Upgrading with reindex-from-remote

如果您运行的是1.x的集群,并想直接迁移到5.x不先迁移到2.x,你可以这样做,使用重新索引,从远程。

您需要在现有的1.x群集旁边设置5.x群集。5.x群集需要访问1.x群集的REST API。

对于要转移到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。
  • 一旦reindex完成,将refresh_interval和number_of_replicas设置为所需的值(默认值分别为30s和1)。
  • 新索引完成复制后,可以删除旧索引。