Elasticsearch 重新索引从 2.x 到 5.x

Elasticsearch reindex from 2.x to 5.x

我将我的 elasticsearch 实例从 elasticsearch-2.x 升级到了 elasticearch-5.6。一切似乎都很好。但在我升级到版本 6 之前,我必须重新索引数据。重建索引是什么意思?

我有一个脚本可以在 elasticsearch 上创建我需要的所有数据。我必须启动这个脚本吗?但在这种情况下,就像我删除所有索引并将所有转储安装回 elasticsearch 一样。

我不知道如何尝试这个,因为我不知道 "right way" 怎么做。

编辑 我现在确实找到了带有 _reindex post 的 api。我是否必须为我拥有的所有索引执行此操作,或者是否有一个我不知道的应用程序执行此操作可能比我快:-)

首先,为什么这是必要的:Apache Lucene 在幕后写入数据。 Lucene 始终可以编写其当前版本并读取以前的版本。

  • 弹性搜索 2.x == Lucene 5
  • 弹性搜索 5.x == Lucene 6
  • 弹性搜索 6.x == Lucene 7

如果你是从2.x升级过来的,在升级到Elasticsearch6.x之前,你需要确保所有的数据都已经用Lucene 6写好了。实际上,您可以使用 GET /_segments 在所有 Lucene 段的 version 信息中检查这一点(这可能会给您提供很多信息)。

您想 运行 完成此任务的是 reindex in place。我强烈推荐免费的 X-Pack Basic 迁移助手,以确保您已升级所有索引并且没有任何其他隐藏的升级问题。