Search code examples
elasticsearchsearchkick

Elasticsearch version upgrade and whether the index needs to be reindexed


We are using Elasticsearch 5.6 hosted on AWS ElasticSearch service and using Rails searchkick gem (v2.5). We are planning to migrate to Elasticsearch 7 and searchkick v4 at some point to make use of the split index functionality.

I am checking whether I would need to rebuild the whole index, it isn't too hard to do for us, maybe over a day.

Over here: https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html Here is a couple of conflicting pieces of information I see on this doc page:

" Elasticsearch can usually be upgraded using a Rolling upgrade process so upgrading does not interrupt service. Rolling upgrades are supported: • Between minor versions

• From 5.6 to 6.8

• From 6.8 to 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. "

If one can do a rolling upgrade from 5.6 to 6.8, and from 6.8 to 7.3.2, and elasticsearch can read indices created in the previous major versions, then is the next statement you must reindex from 5.x to 7.3.2 true?


Solution

  • No.

    I recommend this solution:

    first you should build a new parallel 7.3 cluster. then "remote reindex" data from 5.6 to 7.3. https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-remote.html

    the other solution:

    you can rolling upgrade to 6.5 then "reindex in place" the indices from 5.6 to 6.5. in that moment you have two option:

    1. rolling upgrade to 7.3 and use 6.5 indices (Lucene 7) and miss some new Lucene 8 feature.
    2. rolling upgrade to 7.3 and again "reindex in place" the indices from 6.5 to 7.3 (Lucene 8). with means that you reindex your data two times.