Amazon Neptune 中的非字符串 OpenSearch 索引 - Amazon Neptune

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

Amazon Neptune 中的非字符串 OpenSearch 索引

Amazon Neptune 中的非字符串 OpenSearch 索引编制允许使用流轮询器将谓词的非字符串值复制到 OpenSearch。然后,所有可以安全地转换为相应的 OpenSearch 映射或数据类型的谓词值都将复制到 OpenSearch。

要在新堆栈上启用非字符串索引编制,必须将 AWS CloudFormation 模板中的 Enable Non-String Indexing 标志设置为 true。这是默认设置。要更新现有堆栈以支持非字符串索引编制,请参阅下面的更新现有的堆栈

注意
  • 最好不要在 1.0.4.2 之前的引擎版本上启用非字符串索引编制。

  • OpenSearch 查询使用正则表达式查找与多个字段匹配的字段名,其中一些字段包含字符串值,另一些字段包含非字符串值,但查询会失败并返回错误。如果 Neptune 中的全文搜索查询属于这种类型,也会发生同样的情况。

  • 按非字符串字段排序时,请在字段名称后面附加“.value”,以将其与字符串字段区分开来。

更新现有的 Neptune 全文搜索堆栈以支持非字符串索引编制

如果您已经在使用 Neptune 全文搜索,则需要采取以下步骤来支持非字符串索引编制:

  1. 停止流轮询器 Lambda 函数。这样可以确保在导出过程中不会复制任何新的更新。为此,请禁用用于调用 Lambda 函数的云事件规则:

    • 在 AWS Management Console 中,导航到 CloudWatch。

    • 选择规则

    • 选择带有 Lambda 流轮询器名称的规则。

    • 选择禁用以暂时禁用该规则。

  2. 在 OpenSearch 中删除当前 Neptune 索引。使用以下 curl 查询从 OpenSearch 集群中删除 amazon_neptune 索引:

    curl -X DELETE "your OpenSearch endpoint/amazon_neptune"
  3. 开始从 Neptune 一次性导出到 OpenSearch。此时最好设置一个新的 OpenSearch 堆栈,以便为执行导出的轮询器获取新的构件。

    按照 GitHub 中此处列出的步骤,开始将您的 Neptune 数据一次性导出到 OpenSearch 中。

  4. 更新现有流轮询器的 Lambda 构件。成功完成将 Neptune 数据导出到 OpenSearch 后,请执行以下步骤:

    • 在 AWS Management Console 中,导航到 AWS CloudFormation。

    • 选择主要的父 AWS CloudFormation 堆栈。

    • 为该堆栈选择更新选项。

    • 选择从选项替换当前模板

    • 对于模板源,请选择 Amazon S3 URL

    • 对于 Amazon S3 URL,输入:

      https://aws-neptune-customer-samples.s3.amazonaws.com/neptune-stream/neptune_to_elastic_search.json
    • 在不更改任何 AWS CloudFormation 参数的情况下选择下一步

    • 选择更新堆栈。AWS CloudFormation 将用最新的构件替换流轮询器的 Lambda 代码构件。

  5. 再次启动流轮询器。为此,请启用相应的 CloudWatch 规则:

    • 在 AWS Management Console 中,导航到 CloudWatch。

    • 选择规则

    • 选择带有 Lambda 流轮询器名称的规则。

    • 选择启用