亚马逊海王星到开放搜索复制设置 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

亚马逊海王星到开放搜索复制设置

Amazon Neptune 支持使用亚马逊在 Gremlin 和 SPARQL 查询中进行全文搜索。 OpenSearch 服务(OpenSearch Service)。您可以使用Amazon CloudFormation堆栈以链接 OpenSearch Neptune 的服务域。

在开始之前,您需要一个已启用流的现有 Neptune 数据库集群作为源,并需要一个 OpenSearch 用作复制目标的服务域。

如果您已有目标 OpenSearch 服务域可以由 Neptune 数据库集群所在 VPC 中的 Lambda 访问,则模板可以使用该服务域。否则,您需要创建一个新目标域。

注意

这些区域有: OpenSearch 您创建的群集和 Lambda 函数必须与 Neptune 数据库集群位于同一个 VPC 中,并且 OpenSearch 必须以 VPC 模式(而不是互联网模式)配置集群。

我们建议您将新创建的 Neptune 实例与之一起使用。 OpenSearch 服务 。如果您使用的是已包含数据的现有实例,则应执行 OpenSearch 在进行查询之前同步服务数据,否则可能存在数据不一致。该 GitHub 项目提供了如何执行同步的示例:将 Neptune 导出到 OpenSearch(https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch)。

重要

与 Amazon 集成时 OpenSearch 服务,Neptune 需要 Elasticsearch 7.1 版或更高版本,或任何版本的 OpenSearch。

这些区域有:Amazon CloudFormation然后,下面的模板创建一个流使用者应用程序实例,提供 Neptunto OpenSearch 复制。

使用Amazon CloudFormation您所在地区的模板

要启动Amazon CloudFormation堆叠在Amazon CloudFormation控制台,选择其中一个启动堆栈下表中的按钮,具体取决于Amazon要使用的区域。

区域 查看 在 Designer 中查看 启动
美国东部(弗吉尼亚北部) 查看 在 Designer 中查看
美国东部(俄亥俄) 查看 在 Designer 中查看
美国西部(加利福尼亚北部) 查看 在 Designer 中查看
美国西部(俄勒冈) 查看 在 Designer 中查看
加拿大(中部) 查看 在 Designer 中查看
南美洲(圣保罗) 查看 在 Designer 中查看
欧洲(斯德哥尔摩) 查看 在 Designer 中查看
欧洲(爱尔兰) 查看 在 Designer 中查看
欧洲(伦敦) 查看 在 Designer 中查看
欧洲(巴黎) 查看 在 Designer 中查看
欧洲(法兰克福) 查看 在 Designer 中查看
中东(巴林) 查看 在 Designer 中查看
非洲(开普敦) 查看 在 Designer 中查看
亚太地区(香港) 查看 在 Designer 中查看
亚太地区(东京) 查看 在 Designer 中查看
亚太地区(首尔) 查看 在 Designer 中查看
亚太地区(新加坡) 查看 在 Designer 中查看
亚太地区(孟买) 查看 在 Designer 中查看
中国(北京) 查看 在 Designer 中查看
中国(宁夏) 查看 在 Designer 中查看
Amazon GovCloud (美国西部) 查看 在 Designer 中查看
Amazon GovCloud (美国东部) 查看 在 Designer 中查看

Create stack (创建堆栈) 主页上,选择 Next (下一步)

添加详细信息关于您正在创建的新 OpenSearch 堆栈

这些区域有:指定堆栈细节页面提供了属性和参数,可用于控制全文搜索的设置:

Stack Name— 新的名称Amazon CloudFormation您正在创建的堆栈。通常可以使用默认值 NeptuneStreamPoller

Parameters (参数) 下,提供以下内容:

流使用者运行的 VPC 的网络配置

  • VPC— 提供将运行轮询 Lambda 函数的 VPC 的名称。

  • List of Subnet IDs— 建立网络接口的子网。添加与 Neptune 集群对应的子网。

  • List of Security Group Ids— 提供向源 Neptune 数据库集群授予写入入站访问权限的安全组的 ID。

  • List of Route Table Ids— 如果您还没有终端节点,则需要在 Neptune VPC 中创建 Amazon DynamoDB 终端节点。您必须提供与子网关联的路由表 ID 的逗号分隔列表。

  • Require to create Dynamo DB VPC Endpoint— 默认为的布尔值。true. 您只需将其更改到false如果您已在 VPC 中创建 DynamoDB 终端节点。

  • Require to create Monitoring VPC Endpoint— 默认为的布尔值。true. 如果您已在 VPC 中创建镜像终端节点,则只需将其更改为 false

流轮询器

  • Application Name— 您通常可以将此设置保留为默认设置 (NeptuneStream)。如果您使用不同的名称,则该名称必须是唯一的。

  • Memory size for Lambda Poller— 用于设置 Lambda 轮询器函数可用的内存大小。默认值为 2,048 MB。

  • Lambda Runtime— 从 Neptune 流中检索项目的 Lambda 函数使用的语言。你可以将其设置为python3.6或者去java8.

  • S3 Bucket having Lambda code artifacts— 除非您使用从其他 S3 存储桶加载的自定义 Lambda 轮询函数,否则将此设置保留为空。

  • S3 Key corresponding to Lambda Code artifacts— 除非您使用自定义 Lambda 轮询函数,否则将此设置保留为空。

  • Logging level for Lambda— 通常,将此设置保留为默认值,INFO.

  • Managed Policies for Lambda Execution— 通常,除非您使用自定义 Lambda 轮询函数,否则将此设置保留为空。

  • Stream Records Handler— 通常,除非您为 Neptune 流中的记录使用自定义处理程序,否则将此设置保留为空。

  • Maximum records Fetched from Stream— 您可以使用此参数来优化性能。默认值 (100) 是一个很好的开始。允许的最大值为 10,000。数字越大,从流读取记录所需的网络调用就越少,但处理记录所需的内存越多。

  • Max wait time between two Polls (in Seconds)— 确定 Neptune 用 Lambda 轮询器轮询器轮询流的频率。将此值设置为 0 以进行连续轮询。最大值为 3600 秒(1 小时)。默认值(60 秒)是一个很好的开始,具体取决于图形数据更改的速度。

  • Maximum Continuous polling period (in Seconds)— 用于设置 Lambda 轮询函数的超时。它应该是 5 秒到 900 秒之间。默认值(600 秒)是一个很好的开始。

  • Step Function Fallback Period— 的数量 step-function-fallback-period 等待轮询器的单位,之后将通过亚马逊调用步进函数。 CloudWatch 要从故障中恢复的事件。默认值(5 分钟)是一个很好的开始。

  • Step Function Fallback Period Unit— 用于测量上述的时间单位Step Function Fallback Period(分钟、小时、天)。默认值(分钟)通常就足够了。

  • Data replication scope— 确定是将节点和边复制,还是仅将节点复制到 OpenSearch (这仅适用于 Gremlin 引擎数据)。默认值(All (全部))通常是一个很好的开始。

  • Ignore OpenSearch missing document error— 标志用于确定是否在中缺少文档错误的标志 OpenSearch 可以忽略。缺少文档错误很少发生,但如果不忽略,则需要手动干预。默认值 (True)通常是一个很好的开始。

  • Enable Non-String Indexing— 标记以启用或禁用对没有字符串内容的字段进行索引。如果将此标志设置为true,非字符串字段在 OpenSearch 中被索引,或者false,只对字符串字段进行索引。默认为 true

  • Properties to exclude from being inserted into OpenSearch— 待从中排除的属性或谓词键的逗号分隔列表。 OpenSearch 索引。如果此 CFN 参数值留空,则所有属性键都将索引。

  • Datatypes to exclude from being inserted into OpenSearch— 待从中排除的属性或谓词数据类型的逗号分隔列表。 OpenSearch 索引。如果此 CFN 参数值留空,则可以安全转换为的所有属性值 OpenSearch 数据类型已编制索引。

Neptune Stream

  • Endpoint of source Neptune Stream— (必需) 这采用以下两种形式:

    • https://your DB cluster:port/propertygraph/stream(或者它的别名,https://your DB cluster:port/pg/stream)。

    • https://your DB cluster:port/sparql/stream

  • Neptune Query Engine— 选择 Gremlin 或 SPARQL。

  • Is IAM Auth Enabled?— 如果您的 Neptune 数据库集群使用 IAM 身份验证,请将此参数设置为true.

  • Neptune Cluster Resource Id— 如果您的 Neptune 数据库集群使用 IAM 身份验证,请将此参数设置为集群资源 ID。资源 ID 与集群 ID 不同。相反,它采取的形式是:cluster-后跟 28 个字母数字字符。它可以在下面找到群集详细信息在 Neptune 控制台中。

目标 OpenSearch 聚集

  • Endpoint for OpenSearch service—(必填)提供终端节点 OpenSearch VPC 中的服务。

  • Number of Shards for OpenSearch Index— 默认值 (5) 通常是一个很好的开始。

  • Number of Replicas for OpenSearch Index— 默认值 (1) 通常是一个很好的开始。

  • Geo Location Fields for Mapping— 如果您使用的是地理位置字段,请在此处列出属性键。

警报

  • Require to create Cloud watch Alarm— 将其设置为true如果要创建 CloudWatch 新堆栈的警报。

  • Email for Alarm Notifications— 应向其发送警报通知的电子邮件地址(仅在启用警报时才需要)。

运行 Amazon CloudFormation 模板

现在,您可以完成预配置 Neptune 流使用者应用程序实例的过程,如下所示:

  1. 在 Amazon CloudFormation 中的 Specify Stack Details (指定堆栈详细信息) 页面上,选择 Next (下一步)

  2. Options (选项) 页面上,选择 Next (下一步)

  3. 在存储库的审核页面上,选中第一个复选框以确认Amazon CloudFormation将创建 IAM 资源。选中第二个复选框以确认新堆栈的 CAPABILITY_AUTO_EXPAND

    注意

    CAPABILITY_AUTO_EXPAND 明确确认在创建堆栈时将扩展宏,而无需事先审核。用户通常通过处理的模板创建更改集,以便在实际创建堆栈之前对宏所做的更改进行审核。有关更多信息,请参阅 。Amazon CloudFormation CreateStack中的 API 操作Amazon CloudFormationAPI 参考.

    然后选择 Create (创建)

使用最新的 Lambda 工件更新流轮询器

您可以使用最新的 Lambda 代码工件更新流轮询器,如下所示:

  1. 在Amazon Web Services Management Console导航到,Amazon CloudFormation然后选择主父Amazon CloudFormation堆栈。

  2. 选择更新堆栈的选项。

  3. Select替换当前模板.

  4. 对于模板源,请选择Amazon S3 URL然后输入以下 S3 URL:

    https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json
  5. Select下一步没有更改任何Amazon CloudFormation参数。

  6. 选择 Update Stack

堆栈现在将使用最新的项目更新 Lambda 工件。

在现有 Neptune 数据库上启用全文搜索的不同方法

在现有 Neptune 数据库上启用全文搜索的最佳方法通常如下所示,前提是您可以暂停写入工作负载。它所需的停机时间是有限的,因为创建克隆的速度相对较快。

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

  2. 创建数据库的克隆。

  3. 在原始数据库上启用流。

  4. 恢复写入工作负载。

  5. 使用github 上的这个 Neptune 工具以执行克隆中的一次性同步。

  6. 使用这个Amazon CloudFormation模板从原始数据库同步以进行持续更新(模板中不需要更改配置)。

如果您无法在数据库中挂起写入工作负载,这种方法比上述建议的方法需要的停机时间更少,但是需要谨慎处理:

  1. 在数据库上启用流。

  2. 创建数据库的克隆。

  3. 记下最新的eventID对于来自克隆的流。

  4. 使用github 上的这个 Neptune 工具以执行克隆中的一次性同步。

  5. 使用这个Amazon CloudFormation模板以便从原始数据库同步以便持续更新。你确实需要配置Amazon CloudFormation模板:确保使用eventID你在开始持续同步之前录制了。

禁用和重新启用流轮询器进程

警告

禁用直播轮询器进程时要小心!如果进程暂停超过 7 天(流到期窗口),则可能会发生数据丢失。

禁用(暂停)流轮询器进程

  1. 登录到Amazon Web Services Management Console然后打开亚马逊 EventBridge 控制台在https://console.aws.amazon.com/events/.

  2. 在导航窗格中,选择Rule.

  3. 选择其名称包含您提供的名称的规则应用程序名称中的Amazon CloudFormation用于设置流轮询器的模板。

  4. 选择 Disable (禁用 Amazon Macie)。

  5. 在处打开 Step Functions 控制台https://console.aws.amazon.com/states/.

  6. 选择与流轮询器进程对应的运行步骤函数。同样,该步骤函数的名称包含您提供的名称应用程序名称中的Amazon CloudFormation用于设置流轮询器的模板。您可以按函数执行状态进行筛选以只查看正在运行函数。

  7. 选择 Stop (停止)。

重新启用流轮询程序进程

  1. 登录到Amazon Web Services Management Console然后打开亚马逊 EventBridge 控制台在https://console.aws.amazon.com/events/.

  2. 在导航窗格中,选择Rule.

  3. 选择其名称包含您提供的名称的规则应用程序名称中的Amazon CloudFormation用于设置流轮询器的模板。

  4. 选择 Disable (禁用 Amazon Macie)。基于指定的计划间隔的事件规则现在将触发步骤函数的新执行。

在中查询自定义字段 OpenSearch 使用 Neptune 全文搜索

可以轻松扩展当前的流轮询器以编写用于处理自定义字段的自定义代码,如博客文章中的详细说明:使用 Neptune Streams 捕获图形更改.

注意

在 OpenSearch 中添加自定义字段时,请确保将新字段添加为谓词的内部对象(请参阅Neptune 全文搜索数据模型)。