🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 索引重建升级 Elasticsearch只能使用前一个主版本(major)创建的索引数据。Older indices must be reindexed or deleted. Elasticsearch 6.x can use indices created in Elasticsearch 5.x, but not those created in Elasticsearch 2.x or before. Elasticsearch 5.x can use indices created in Elasticsearch 2.x, but not those created in 1.x or before. Elasticsearch nodes will fail to start if incompatible indices are present. To upgrade an Elasticsearch cluster running 2.x, you have two options: * Perform a [full cluster restart upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/restart-upgrade.html "Full cluster restart upgrade") to 5.6, [reindex](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/reindex-upgrade.html#reindex-upgrade-inplace "Reindex in place") the 2.x indices, then perform a [rolling upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/rolling-upgrades.html "Rolling upgrades") to 6.x. If your Elasticsearch 2.x cluster contains indices that were created before 2.x, you must either delete or reindex them before upgrading to 5.6\. For more information about upgrading from 2.x to 5.6, see [Upgrading Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/5.6/setup-upgrade.html) in the Elasticsearch 5.6 Reference. * Create a new 6.x cluster and [reindex from remote](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/reindex-upgrade.html#reindex-upgrade-remote "Reindex from a remote cluster") to import indices directly from the 2.x cluster. To upgrade an Elasticsearch 1.x cluster, you have two options: * Perform a [full cluster restart upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/restart-upgrade.html "Full cluster restart upgrade") to Elasticsearch 2.4.x and [reindex](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/reindex-upgrade.html#reindex-upgrade-inplace "Reindex in place") or delete the 1.x indices. Then, perform a full cluster restart upgrade to 5.6 and reindex or delete the 2.x indices. Finally, perform a [rolling upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/rolling-upgrades.html "Rolling upgrades") to 6.x. For more information about upgrading from 1.x to 2.4, see [Upgrading Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/setup-upgrade.html) in the Elasticsearch 2.4 Reference. For more information about upgrading from 2.4 to 5.6, see [Upgrading Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/5.6/setup-upgrade.html) in the Elasticsearch 5.6 Reference. * Create a new 6.x cluster and [reindex from remote](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/reindex-upgrade.html#reindex-upgrade-remote "Reindex from a remote cluster") to import indices directly from the 1.x cluster. ## **Upgrading time-based indices** If you use time-based indices, you likely won’t need to carry pre-5.x indices forward to 6.x. Data in time-based indices generally becomes less useful as time passes and are deleted as they age past your retention period. Unless you have an unusally long retention period, you can just wait to upgrade to 6.x until all of your pre-5.x indices have been deleted. ## Reindex in place To manually reindex your old indices with the [`reindex` API](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/docs-reindex.html "Reindex API"): 1. Create a new index and copy the mappings and settings from the old index. 2. Set the `refresh_interval` to `-1` and the `number_of_replicas` to `0` for efficient reindexing. 3. Reindex all documents from the old index into the new index using the[reindex API](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/docs-reindex.html "Reindex API"). 4. Reset the `refresh_interval` and `number_of_replicas` to the values used in the old index. 5. Wait for the index status to change to `green`. 6. In a single [update aliases](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/indices-aliases.html "Index Aliases") request: a. Delete the old index. b. Add an alias with the old index name to the new index. c. Add any aliases that existed on the old index to the new index. ### **Migration assistance and upgrade tools** X-Pack 5.6 provides migration assistance and upgrade tools that simplify reindexing and upgrading to 6.x. These tools are free with the X-Pack trial and Basic licenses and you can use them to upgrade whether or not X-Pack is a regular part of your Elastic Stack. For more information, see ### Reindex from a remote cluster You can use [reindex from remote](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/docs-reindex.html#reindex-from-remote "Reindex from Remoteedit") to migrate indices from your old cluster to a new 6.x cluster. This enables you move to 6.x from a pre-5.6 cluster without interrupting service. > 警告 > > Elasticsearch provides backwards compatibility support that enables indices from the previous major version to be upgraded to the current major version. Skipping a major version means that you must resolve any backward compatibility issues yourself. To migrate your indices: 1. Set up a new 6.x cluster alongside your old cluster. Enable it to access your old cluster by adding your old cluster to the `reindex.remote.whitelist` in`elasticsearch.yml`: ``` reindex.remote.whitelist: oldhost:9200 ``` > 注意 > > The new cluster doesn’t have to start fully-scaled out. As you migrate indices and shift the load to the new cluster, you can add nodes to the new cluster and remove nodes from the old one. 2. For each index that you need to migrate to the 6.x cluster: a. Create a new index in 6.x with the appropriate mappings and settings. Set the `refresh_interval` to `-1` and set `number_of_replicas`to `0` for faster reindexing. b. [Reindex from remote](https://www.elastic.co/guide/en/elasticsearch/reference/6.0/docs-reindex.html#reindex-from-remote "Reindex from Remoteedit") to pull documents from the old index into the new 6.x index: ``` POST _reindex { "source": { "remote": { "host": "http://oldhost:9200", "username": "user", "password": "pass" }, "index": "source", "query": { "match": { "test": "data" } } }, "dest": { "index": "dest" } } ``` c. When the reindex job completes, set the `refresh_interval` and`number_of_replicas` to the desired values (the default settings are`30s` and `1`). d. Once replication is complete and the status of the new index is`green`, you can delete the old index.