添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
豪爽的豌豆  ·  对比 SQL ...·  1 周前    · 
年轻有为的熊猫  ·  Error: No module ...·  2 周前    · 
留胡子的打火机  ·  How to Get an MPL ...·  2 周前    · 
怕考试的签字笔  ·  无节操摄影部 ...·  2 月前    · 

停止并启动管道 :此选项会重置管道的状态,并且管道将以新的完整导出重新启动。它是非破坏性的,因此它 不会 删除您的索引或 DynamoDB 中的任何数据。如果在执行此操作之前没有创建新的索引,则可能会看到大量版本冲突导致的错误,因为导出操作会尝试在索引中插入比当前 _version 版本更旧的文档。这些错误完全可以忽略。当管道停止时,您无需支付管道的费用。

更新管道 :此选项使用 蓝/绿 方法更新管道中的配置,而不会丢失任何状态。如果您对管道进行了重大更改(例如向现有索引添加新的路由、索引或键),则可能需要完全重置管道并重新创建索引。此选项 执行完整导出。

删除并重新创建索引 :此选项会删除索引上的数据和映射设置。在对映射进行任何重大更改之前,应先执行此操作。它将破坏所有依赖该索引的应用程序,直至重新创建和同步索引。删除索引 不会 启动新的导出。只有在更新管道之后,才应删除索引。否则,可能会在更新设置之前重新创建索引。

删除索引并重置管道(以管道为中心的选项)

如果您仍处于开发中,这种方法通常是最快的选择。您将在 OpenSearch Service 中删除索引,然后 停止并启动 管道,启动所有数据的全新导出。这样可以确保与现有索引没有映射模板冲突,也不会丢失未完成处理的表中的数据。

通过 AWS Management Console、或结合 AWS CLI 或 SDK 使用 StopPipeline API 操作来停止管道。

用新的更改 更新您的管道配置

通过 REST API 调用或通过 OpenSearch 控制面板删除您在 OpenSearch Service 中的索引。

通过控制台、或结合 AWS CLI 或 SDK 使用 StartPipeline API 操作来停止管道。

注意

这将启动新的完整导出,会产生额外费用。

监控是否存在任何意外问题,因为会生成新的导出来创建新索引。

确认该索引符合您在 OpenSearch Service 中的预期。

导出完成并恢复从流中读取后,您的 DynamoDB 表数据现在将在索引中可用。

重新创建索引并重置管道(以索引为中心的选项)

如果您需要在从 DynamoDB 恢复管道之前,在 OpenSearch Service 中对索引设计执行大量迭代,则此方法效果很好。当您想非常快速地迭代搜索模式,并且希望避免在每次迭代之间等待新的导出完成时,这对于开发很有用。

通过 AWS Management Console、或通过结合 AWS CLI 或 SDK 调用 StopPipeline API 操作来停止管道。

借助要使用的映射模板在 OpenSearch 中删除并重新创建索引。您可以手动插入一些示例数据,以确认您的搜索是否按预期进行。如果您的示例数据可能与 DynamoDB 中的任何数据存在冲突,请务必将其删除后再继续下一步。

如果您的管道中有索引模板,请将其删除或替换为在 OpenSearch Service 中创建的索引模板。确保索引的名称与管道中的名称相匹配。

通过控制台、或结合 AWS CLI 或 SDK 调用 StartPipeline API 操作来停止管道。

注意

这将启动新的完整导出,将会产生额外费用。

监控是否存在任何意外问题,因为会生成新的导出来创建新索引。

导出完成并恢复从流中读取后,您的 DynamoDB 表数据现在便在索引中可用。

创建新的索引并接收(在线选项)

如果您需要更新映射模板,但目前正在生产中使用索引,则此方法效果很好。这将创建一个全新的索引,在进行同步和验证后,您需要将应用程序切换至该索引。

注意

这将在流中创建另一个使用者。如果您还有其它使用者(如 AWS Lambda 或全局表),则可能会出现问题。您可能需要暂停对现有管道的更新,来创建加载新索引的容量。

使用新设置和不同的索引名称 创建新管道

监控新索引是否存在任何意外问题。

将应用程序切换至新索引。

在验证一切正常后,停止并删除旧管道。

避免和调试类型冲突的最佳实践

当存在类型冲突时,请务必使用死信队列(DLQ),其有助于更轻松地进行调试。

始终使用带有映射的索引模板并设置 include_keys 。虽然 OpenSearch Service 会动态映射新键,但这可能会导致出现意外行为(例如预期某些内容为 GeoPoint ,但却创建为 string object )或错误(例如 number 混合了 long float 值)。