A. *_*mer 6 elasticsearch amazon-dynamodb amazon-dynamodb-streams
我按照这篇博文中的描述设置了 Elasticsearch Service 和 DynamoDb 流。 现在我需要将预先存在的数据从 DynamoDB 添加到 Elasticsearch。
我看到了文章的“索引预先存在的内容”部分,但我不知道如何处理该 Python 代码,以及在哪里执行它。
在这种情况下添加预先存在的数据的最佳选择是什么?
将现有项目填充到 elasticsearch 并不简单,因为 dynamodb 流适用于项目更改而不是现有记录,
以下是一些有利有弊的方法
从 dynamodb 扫描所有现有项目并发送到 elasticsearch
我们可以扫描所有现有项目并运行托管在 ec2 机器上的 python 代码将数据发送到 es。
Pros:
一种。简单的解决方案,不需要太多。
Cons:
一种。无法在 lambda 函数上运行,因为如果记录数过多,作业可能会超时。
湾 这种方法更像是一次性的,不能用于增量更改,(假设我们希望随着 dynamodb 数据更改而不断更新 es。)
使用 dynamodb 流
我们可以启用 dynamodb 流并按照此处的说明构建管道。现在我们可以更新现有项目的一些标志,以便所有记录流经管道,数据流向 es。
Pros:
一种。管道可用于增量 dynamodb 更改。
湾 没有代码重复或一次努力,每次我们需要更新 es 中的一项时,我们都会更新该项并在 es 中对其进行索引。
C。没有多余的、未经测试的一次性代码。(软件世界中维护代码的巨大问题。)
Cons:
一种。更改 Prod 数据可能是一件危险的事情,根据用例可能不允许。
这是对上述方法的轻微修改
我们可以创建一个临时表并在临时表上启用流,而不是更改 prod 表中的项目。利用第二种方法中提到的管道。然后将项目从 prod 表复制到临时表,数据将流经现有管道并在 ES 中索引。
Pros:
一种。无需更改 Prod 数据,此管道也可用于增量更改。
湾 与方法2相同。
Cons:
一种。将数据从一个表复制到另一个表可能需要大量时间,具体取决于数据大小。
湾 将数据从一个表复制到另一个表是一次性脚本,因此存在可维护性问题。
随时在评论中编辑或建议其他方法。
归档时间: |
|
查看次数: |
3345 次 |
最近记录: |