停止并启动管道
:此选项会重置管道的状态,并且管道将以新的完整导出重新启动。它是非破坏性的,因此它
不会
删除您的索引或 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
值)。