Elasticsearch版本升级及索引是否需要重建索引

Elasticsearch version upgrade and whether the index needs to be reindexed

我们正在使用托管在 AWS ElasticSearch 服务上的 Elasticsearch 5.6,并使用 Rails searchkick gem (v2.5)。我们计划在某个时候迁移到 Elasticsearch 7 和 searchkick v4 以利用拆分索引功能。

我正在检查是否需要重建整个索引,这对我们来说并不难,可能需要一天的时间。

这边:https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html 这是我在此文档页面上看到的一些相互矛盾的信息:

” Elasticsearch 通常可以使用滚动升级过程进行升级,因此升级不会中断服务。支持滚动升级: • 在次要版本之间

• 从 5.6 到 6.8

• 从 6.8 到 7.3.2

...

"Elasticsearch can read indices created in the previous major version. If you have indices created in 5.x or before, you must reindex or delete them before upgrading to 7.3.2. "

如果可以从 5.6 滚动升级到 6.8,从 6.8 滚动升级到 7.3.2,并且 elasticsearch 可以读取在以前的主要版本中创建的索引,那么下一条语句必须从 5.x 到 7.3.2 是吗?

没有

我推荐这个解决方案:

首先您应该构建一个新的并行 7.3 集群。然后 "remote reindex" 数据从 5.6 到 7.3。 https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-remote.html

另一种解决方案:

您可以滚动升级到 6.5,然后 "reindex in place" 索引从 5.6 升级到 6.5。 在那一刻你有两个选择:

  1. 滚动升级到 7.3 并使用 6.5 索引 (Lucene 7) 并错过一些新的 Lucene 8 功能。
  2. 滚动升级到 7.3,然后 "reindex in place" 索引从 6.5 升级到 7.3 (Lucene 8)。 with 意味着您将数据重新索引两次。