

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

# 在现有 Neptune 数据库上启用全文搜索
<a name="full-text-search-cfn-enabling"></a>

 这些是在现有 Amazon Neptune 数据库上启用全文搜索的既定方法。根据您是否可以暂停写入工作负载，步骤可能会略有不同。本指南概述了以下两种情况下的推荐步骤：可以暂停写入时和无法暂停写入时。它包括启用 Neptune 流、创建数据库克隆、将数据同步到 OpenSearch 域以及设置持续更新。该指南利用 AWS 服务和开源工具来简化流程并最大限度地减少停机时间。

## 如果您可以暂停写入工作负载
<a name="full-text-search-cfn-enabling-with-pause"></a>

在现有 Neptune 数据库上启用全文搜索的最佳方法通常如下所示，前提是您可以暂停写入工作负载。它需要创建克隆，使用集群参数启用流，然后重新启动所有实例。创建克隆的操作相对较快，因此所需的停机时间是有限的。

下面列出了所需的步骤：

1. 停止数据库上的所有写入工作负载。

1. 在数据库上启用流（请参阅[启用 Neptune 流](streams-using-enabling.md)）。

1. 创建数据库的克隆（请参阅 [Neptune 中的数据库克隆](manage-console-cloning.md)）。

1. 恢复写入工作负载。

1. 使用 github 上的[export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)工具执行从克隆的数据库到 OpenSearch域的一次性同步。

1. 使用[您所在区域的CloudFormation 模板](https://docs.aws.amazon.com/neptune/latest/userguide/full-text-search-cfn-create.html#full-text-search-cfn-by-region)从原始数据库开始同步，并进行持续更新（无需更改模板中的配置）。

1. 删除克隆的数据库和为该`export-neptune-to-elasticsearch`工具创建的 CloudFormation 堆栈。

**注意**  
如果[export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)与 Opensearch Serverless 一起使用，则必须将 [export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)Cloudformation 堆栈`LambdaExecutionRole`创建的堆栈添加到 [Opensearch 数据访问策略](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html)中才能成功复制数据。

## 如果您无法暂停写入工作负载
<a name="full-text-search-cfn-enabling-without-pause"></a>

如果您承担不起在数据库上暂停写入工作负载的代价，那么以下方法所需的停机时间甚至比上述推荐的方法还要少，但需要谨慎行事：

1. 在数据库上启用流（请参阅[启用 Neptune 流](streams-using-enabling.md)）。

1. 创建数据库的克隆（请参阅 [Neptune 中的数据库克隆](manage-console-cloning.md)）。

1. 通过对 Streams API 端点执行此类命令，获取克隆数据库上流的最新 `eventID`（有关更多信息，请参阅[调用 Neptune Streams REST API](streams-using-api-call.md)）：

   ```
   curl "https://(your neptune endpoint):(port)/(propertygraph or sparql)/stream?iteratorType=LATEST"
   ```

   记下响应的 `lastEventId` 对象中 `commitNum` 和 `opNum` 字段的值。

1. 使用 github 上的[export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)工具执行从克隆的数据库到 OpenSearch域的一次性同步。

1. 使用[您所在区域的CloudFormation 模板](https://docs.aws.amazon.com/neptune/latest/userguide/full-text-search-cfn-create.html#full-text-search-cfn-by-region)从原始数据库开始同步，并进行持续更新。

   创建堆栈时进行以下更改：在堆栈详细信息页面的**参数**部分中，**opnum**使用上面记录的`commitNum`和值，将该`StartingCheckpoint`字段的`opNum`值设置为**commitNum**:。

1. 删除克隆的数据库和为该`export-neptune-to-elasticsearch`工具创建的 CloudFormation 堆栈。