

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 升级 Amazon OpenSearch Service 域
<a name="version-migration"></a>

**注意**  
OpenSearch 而且 Elasticsearch 版本升级不同于服务软件更新。有关更新服务域的服务软件的信息 OpenSearch ，请参阅[Amazon OpenSearch Service 中的服务软件更新](service-software.md)。

Amazon OpenSearch Service 为运行 OpenSearch 1.0 或更高版本，或者 Elasticsearch 5.1 或更高版本的域提供了就地升级。如果您使用诸如 Amazon Data Firehose 或 Amazon CloudWatch Logs 之类的 OpenSearch 服务将数据流式传输到服务，请在迁移 OpenSearch 之前检查这些服务是否支持较新版本的。

## 支持的升级途径
<a name="supported-upgrade-paths"></a>

目前， OpenSearch 服务支持以下升级路径：


| 之前版本 | 目标版本 | 
| --- | --- | 
| OpenSearch 1.3、2。 x，或 3。 x |  OpenSearch 3。 *x* 如果你运行的是 OpenSearch 1.3 或 2.x，则必须先升级到 OpenSearch 2.19，*然后再*升级到 OpenSearch 3.x。 从 OpenSearch 2.19 升级到 OpenSearch 3.x 时，可能需要解决以下不兼容的索引设置。这些索引设置在 2.x 之前的版本中就已弃用，如果不移除，会导致升级检查验证失败。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/version-migration.html) 有关已弃用的索引设置以及修复这些设置的步骤的更多信息，请参阅[索引设置](https://docs.opensearch.org/2.6/search-plugins/knn/knn-index/#index-settings)。有关 OpenSearch 3.x 重大更改的完整列表，请参阅 [3.](https://docs.opensearch.org/latest/breaking-changes/#300) 0.0。 如果您的域包含在 OpenSearch 1.3、Elasticsearch 7.10 或更早版本中创建的索引，则必须在升级到 3.x 之前对其重新编制索引。 OpenSearch OpenSearch 3.x 不支持这些较旧的索引，无论它们是在热存储还是冷存储 UltraWarm中。要重新编制不兼容索引 UltraWarm 或冷索引，请执行以下操作： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/version-migration.html) 或者，如果您不再需要索引，也可以将其删除。  | 
| OpenSearch 1.3 或 2。 x |  OpenSearch 2。 *x* OpenSearch 如果域满足以下条件，则默认情况下，2.17 将在自动模式下启用并行区段搜索： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/version-migration.html) 版本 2.3 具有以下重大更改： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/version-migration.html)  | 
| OpenSearch 1。 x | OpenSearch 1。 x | 
| Elasticsearch 7.x |  弹性搜索 7. *x* 或 OpenSearch 1。 *x*  OpenSearch 1。 *x* 引入了许多重大更改。有关更多信息，请参阅 [Amazon OpenSearch 服务重命名-变更摘要](rename.md)。   | 
|  Elasticsearch 6.8  |  弹性搜索 7. *x* 或 OpenSearch 1。 *x*  Elasticsearch 7.0 和 OpenSearch 1.0 包含许多重大更改。在启动就地升级之前，我们建议您[手动拍摄 6 的快照](managedomains-snapshots.md)。 *x* 域，在测试中将其恢复 7. *x* 或 OpenSearch 1。 *x* 域，并使用该测试域来识别潜在的升级问题。有关 OpenSearch 1.0 中的重大更改，请参阅[Amazon OpenSearch 服务重命名-变更摘要](rename.md)。 与 Elasticsearch 6.*x* 相似，索引只能包含一种映射类型，但该类型现在必须名为 `_doc`。因此，某些请求正文中 APIs 不再需要映射类型（例如 `_bulk` API）。 对于新索引，请使用自托管的 Elasticsearch 7。 *x* 和 OpenSearch 1。 *x* 的默认分片数为 1。 OpenSearch Elasticsearch 上的服务域 7. *x* 及更高版本保留之前的默认值 5。   | 
| Elasticsearch 6.*x* | Elasticsearch 6.*x* | 
| Elasticsearch 5.6 |  Elasticsearch 6.*x*  在版本 6.*x* 中创建的索引不再支持多个映射类型。在版本 5.*x* 中创建的索引在还原到 6.*x* 集群后仍然支持多个映射类型。请检查您的代码是否仅为每个索引创建一个映射类型。 尽量减少从 Elasticsearch 5.6 升级到 6 期间的停机时间。 *x，S* OpenSearch ervice 将索引重新索引到`.kibana-6``.kibana`、删除、创建名为的别名`.kibana`，并将新索引映射到新别名。`.kibana`   | 
| Elasticsearch 5.x | Elasticsearch 5.x | 

升级过程包括三个步骤：

1. **升级前检查** — OpenSearch 服务会检查是否存在可能阻碍升级的问题，除非这些检查成功，否则不会继续执行下一步操作。

1. **快照** — OpenSearch 服务会拍摄 OpenSearch 或 Elasticsearch 集群的快照，除非快照成功，否则不会继续执行下一步操作。如果升级失败， OpenSearch 服务将使用此快照将集群恢复到其原始状态。有关更多信息，请参阅 [升级后无法降级](handling-errors.md#troubleshooting-upgrade-snapshot)。

1. **升级**- OpenSearch 服务会启动升级，升级可能需要 15 分钟到几个小时才能完成。 OpenSearch 在部分或全部升级期间，仪表板可能不可用。

# 升级域（控制台）
<a name="starting-upgrades"></a>

升级过程是不可撤消的，并且无法暂停或取消。在升级过程中，您无法对域进行配置更改。在开始升级之前，请仔细确认您是否要继续。您可以使用这些相同步骤执行升级前检查而不实际开始升级。

如果集群有专用的主节点，则 OpenSearch 升级无需停机即可完成。否则，集群在选择主节点时可能会在升级后几秒钟无响应。

**将域名升级到更高版本 OpenSearch 或 Elasticsearch**

1. [创建您的域的手动快照](managedomains-snapshots.md)。此快照用作备份，如果您想[恢复使用先前 OpenSearch 版本，则可以在新域上恢复](managedomains-snapshot-restore.md)该快照。

1. 前往[https://aws.amazon.com](https://console.aws.amazon.com/)并选择 “**登录到控制台”**。

1. 在 “**分析**” 下，选择 “**亚马逊 OpenSearch 服务**”。

1. 在导航窗格中的 **Domains**（域）下，选择要升级的域。

1. 选择 **Actions（操作）**和 **Upgrade（升级）**。

1. 选择要升级到的版本。如果您要升级到某个 OpenSearch 版本，则会出现 “**启用兼容模式**” 选项。如果您启用此设置，则将其版本 OpenSearch 报告为 7.10，以允许 Elasticsearch OSS 客户端和 Logstash 等插件继续使用亚马逊服务。 OpenSearch 可以稍后禁用此设置

1. 选择 **Upgrade**。

1. 检查域控制面板上的 **Status（状态）**以监控升级的状态。

# 升级域（CLI）
<a name="starting-upgrades-cli"></a>

您可以使用以下操作为您的域识别 OpenSearch 或 Elasticsearch 的正确版本、开始就地升级、执行升级前检查并查看进度：
+ `get-compatible-versions` (`GetCompatibleVersions`)
+ `upgrade-domain` (`UpgradeDomain`)
+ `get-upgrade-status` (`GetUpgradeStatus`)
+ `get-upgrade-history` (`GetUpgradeHistory`)

有关更多信息，请参阅 [AWS CLI 命令参考](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/opensearch/index.html)和[亚马逊 OpenSearch 服务 API 参考](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/Welcome.html)。

# 升级域（SDK）
<a name="starting-upgrades-sdk"></a>

此示例使用中的[OpenSearchService](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/opensearch.html)低级 Python 客户端 AWS SDK for Python (Boto) 来检查域是否有资格升级到特定版本，对其进行升级，并持续检查升级状态。

```
import boto3
from botocore.config import Config
import time

# Build the client using the default credential configuration.
# You can use the CLI and run 'aws configure' to set access key, secret
# key, and default Region.

DOMAIN_NAME = ''  # The name of the domain to upgrade
TARGET_VERSION = ''  # The version you want to upgrade the domain to. For example, OpenSearch_1.1

my_config = Config(
    # Optionally lets you specify a Region other than your default.
    region_name='us-east-1'
)
client = boto3.client('opensearch', config=my_config)


def check_versions():
    """Determine whether domain is eligible for upgrade"""
    response = client.get_compatible_versions(
        DomainName=DOMAIN_NAME
    )
    compatible_versions = response['CompatibleVersions']
    for i in range(len(compatible_versions)):
        if TARGET_VERSION in compatible_versions[i]["TargetVersions"]:
            print('Domain is eligible for upgrade to ' + TARGET_VERSION)
            upgrade_domain()
            print(response)
        else:
            print('Domain not eligible for upgrade to ' + TARGET_VERSION)


def upgrade_domain():
    """Upgrades the domain"""
    response = client.upgrade_domain(
        DomainName=DOMAIN_NAME,
        TargetVersion=TARGET_VERSION
    )
    print('Upgrading domain to ' + TARGET_VERSION + '...' + response)
    time.sleep(5)
    wait_for_upgrade()


def wait_for_upgrade():
    """Get the status of the upgrade"""
    response = client.get_upgrade_status(
        DomainName=DOMAIN_NAME
    )
    if (response['UpgradeStep']) == 'UPGRADE' and (response['StepStatus']) == 'SUCCEEDED':
        print('Domain successfully upgraded to ' + TARGET_VERSION)
    elif (response['StepStatus']) == 'FAILED':
        print('Upgrade failed. Please try again.')
    elif (response['StepStatus']) == 'SUCCEEDED_WITH_ISSUES':
        print('Upgrade succeeded with issues')
    elif (response['StepStatus']) == 'IN_PROGRESS':
        time.sleep(30)
        wait_for_upgrade()


def main():
    check_versions()


if __name__ == "__main__":
    main()
```

## 对验证失败进行故障排除
<a name="upgrade-validation"></a>

当您启动 OpenSearch 或 Elasticsearch 版本升级时， OpenSearch 服务会首先执行一系列验证检查，以确保您的域名符合升级条件。如果其中任何一项检查失败，您将收到通知，其中包含在升级域之前必须修复的特定问题。有关潜在问题及其解决步骤的列表，请参阅 [对验证错误进行故障排除](managedomains-configuration-changes.md#validation)。

## 排查升级问题
<a name="upgrade-failures"></a>

就地 升级需要正常运行的域。您的域可能不符合升级条件或出于各种原因无法升级。下表显示了最常见的问题。


| 问题 | 说明 | 
| --- | --- | 
| 不支持可选插件 |  当您使用可选插件升级域名时，S OpenSearch ervice 也会自动升级插件。因此，您的域的目标版本还必须支持这些可选插件。如果域安装了目标版本不可用的可选插件，则升级请求将失败。  | 
| 一个节点的分片过多 | OpenSearch，以及 7。 x 个版本的 Elasticsearch，其默认设置为每个节点不超过 1,000 个分片。如果您当前集群中的某个节点超过此设置，则 OpenSearch 服务将不允许您升级。有关问题排查选项，请参阅[超过最大分片限制](handling-errors.md#troubleshooting-shard-limit)。 | 
| 域正在处理中 | 域正在接受配置更改。在操作完成后检查升级资格。 | 
| 红色集群状态 | 集群中的一个或多个索引为红色。有关问题排查步骤，请参阅[红色集群状态](handling-errors.md#handling-errors-red-cluster-status)。 | 
| 高错误率 | 在尝试处理请求时，集群返回大量 5xx 错误。此问题通常是因为同时读取或写入了过多的请求。请考虑减少流向集群的流量或扩展您的域。 | 
| 裂脑 | 脑裂意味着您的集群有多个主节点并且已拆分成两个绝不会自行重新联接的集群。您可以通过使用推荐数量的[专用主节点](managedomains-dedicatedmasternodes.md)避免裂脑。为了帮助您从裂脑恢复，请联系 [支持](https://console.aws.amazon.com/support/home)。 | 
| 找不到主节点 | OpenSearch 服务找不到集群的主节点。如果您的域使用了[多 AZ](managedomains-multiaz.md)，一个可用区故障可能已导致集群失去仲裁节点数且无法选择新的[主节点](managedomains-dedicatedmasternodes.md)。如果该问题无法自行解决，请联系 [支持](https://console.aws.amazon.com/support/home)。 | 
| 待处理任务过多 | 主节点处于高负载状态，且具有很多待处理任务。请考虑减少流向集群的流量或扩展您的域。 | 
| 存储卷受损 | 一个或多个节点的磁盘卷无法正常运行。此问题通常与其他问题一起发生，例如高错误率或待处理任务过多。如果它是独立发生的且无法自行解决，请联系 [支持](https://console.aws.amazon.com/support/home)。 | 
| KMS 密钥问题 | 用于加密域的 KMS 密钥无法访问或丢失。有关更多信息，请参阅 [监控对静态数据进行加密的域](encryption-at-rest.md#monitoring-ear)。 | 
| 快照拍摄正在进行中 | 域当前正在拍摄快照。在快照拍摄完成后检查升级资格。还要检查您是否可以列出手动快照存储库，在这些存储库中列出快照，并拍摄手动快照。如果 OpenSearch 服务无法检查快照是否正在进行中，则升级可能会失败。 | 
| 快照拍摄超时或失败 | 升级前快照拍摄所需的时间过长或失败。检查集群运行状况并重试。如果问题仍存在，请联系 [支持](https://console.aws.amazon.com/support/home)。 | 
| 索引不兼容 | 一个或多个索引与目标版本不兼容。如果您从旧版本 OpenSearch 或 Elasticsearch 迁移索引，则可能会出现此问题。重建索引并重试。 | 
| 高磁盘使用率 | 集群的磁盘使用率高于 90%。删除数据或扩展域，然后重试。 | 
| 高 JVM 使用率 | JVM 内存压力高于 75%。减少流向集群的流量或扩展域，然后重试。 | 
| OpenSearch 仪表板别名问题 | .dashboards已配置为别名并映射到不兼容的索引，可能来自早期版本的 Dashboard OpenSearch s。重建索引，然后重试。 | 
| 红色控制面板状态 | OpenSearch 仪表板状态为红色。尝试在升级完成时使用控制面板。如果红色状态仍然存在，请手动解决该问题，然后重试。 | 
| 跨集群兼容性 |  仅当升级之后源域与目标域之间保持跨集群兼容性时，才能升级。在升级过程中，会识别任何不兼容的连接。要继续，请删除远程域或删除不兼容的连接。请注意，如果域上的复制处于活动状态，则在删除连接后无法恢复复制。  | 
| 其他 OpenSearch 服务服务问题 |  OpenSearch 服务本身的问题可能会导致您的域名显示为不符合升级资格。如果上述情况都不适用于您的域且该问题持续超过一天，请联系 [支持](https://console.aws.amazon.com/support/home)。 | 

# 使用快照迁移数据
<a name="snapshot-based-migration"></a>

就地升级是将域名升级到更高版本 OpenSearch 或 Elasticsearch 版本的更简单、更快速、更可靠的方法。如果您需要从 5.1 之前的 Elasticsearch 版本迁移或想要迁移到全新的集群，那么快照是一个很好的选择。

下表显示了如何使用快照将数据迁移到使用不同版本 OpenSearch 或 Elasticsearch 版本的域中。有关制作和还原快照的更多信息，请参阅[在 Amazon OpenSearch 服务中创建索引快照](managedomains-snapshots.md)。


| 之前版本 | 目标版本 | 迁移过程 | 
| --- | --- | --- | 
| OpenSearch 1.3 或 2。 x | OpenSearch 2。 x |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| OpenSearch 1。 x | OpenSearch 1。 x |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| Elasticsearch 6.x 或 7.x | OpenSearch 1。 x |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| Elasticsearch 6.x | Elasticsearch 7.x |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| Elasticsearch 6.x | Elasticsearch 6.8 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| Elasticsearch 5.x | Elasticsearch 6.x |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| Elasticsearch 5.x | Elasticsearch 5.6 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| Elasticsearch 2.3 | Elasticsearch 6.x |  Elasticsearch 2.3 快照与 6.*x* 不兼容。要将您的数据直接从 2.3 迁移到 6.*x*，则必须在新域中手动重新创建您的索引。 或者，您也可以执行本表中从 2.3 迁移到 5.*x* 的步骤，在新的 5.*x* 域中执行 `_reindex` 操作以将 2.3 索引转换为 5.*x* 索引，然后执行从 5.*x* 迁移到 6.*x* 的步骤。  | 
| Elasticsearch 2.3 | Elasticsearch 5.x |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 
| Elasticsearch | Elasticsearch 5.x |  1.5 快照与 5.*x* 不兼容。要将您的数据从 1.5 迁移到 5.*x*，则必须在新域中手动重新创建您的索引。  1.5 快照*与* 2.3 兼容，但 OpenSearch 服务 2.3 域不支持该`_reindex`操作。由于您无法为它们重新编制索引，因此 1.5 域中发出的索引仍无法从 2.3 快照还原到 5.*x* 域。   | 
| Elasticsearch | Elasticsearch 2.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/snapshot-based-migration.html)  | 