我按照this blog post.中的说明设置了Elasticsearch Service和DynamoDb流 现在我需要将预先存在的数据从DynamoDB添加到Elasticsearch。
我看到“索引预先存在的内容”是文章的一部分,但我不知道如何处理Python代码,在哪里执行它。
在这种情况下,添加预先存在的数据的最佳选择是什么?
答案 0 :(得分:1)
在this post中描述了如何将预先存在的数据从DynamoDB添加到Elasticsearch。
答案 1 :(得分:0)
将现有项目填充到Elasticsearch并不容易,因为dynamodb流适用于项目更改而不适用于现有记录,
这里有一些利弊的方法
从dynamodb扫描所有现有项目并发送到elasticsearch
我们可以扫描所有现有项目并运行ec2计算机上托管的python代码,以将数据发送到es。
Pros:
a。简单的解决方案,不需要太多。
Cons:
a。无法在lambda函数上运行,因为如果记录数过多,作业可能会超时。
b。这种方法是一次性的,不能用于增量更改(假设我们要随着动态数据更改而不断更新es。)
使用动力发电机流
我们可以启用dynamodb流并按照here中的说明构建管道。 现在,我们可以更新现有项目的一些标志,以便所有记录都通过管道,并且数据将流至es。
Pros:
a。该管道可用于动态dynamodb更改。
b。无需重复代码,也无需费时,每次需要在es中更新一项时,我们都会更新该项并在es中对其进行索引。
c。没有多余的,未经测试的一次性代码。 (软件世界中维护代码的巨大问题。)
Cons:
a。更改Prod数据可能是危险的事情,根据使用情况,可能不允许这样做。
这是对上述方法的略微修改
代替在prod表中更改项目,我们可以创建一个Temporary表并在Temporary表上启用流。利用第二种方法中提到的管道。然后将项目从prod表复制到Temporary表,数据将流过现有管道并在ES中建立索引。
Pros:
a。不需要更改Prod数据,该管道也可以用于增量更改。
b。与方法2相同。
Cons:
a。将数据从一个表复制到另一个表可能要花费很多时间,具体取决于数据大小。
b。将数据从一个表复制到另一个表是一次性脚本,因此存在可维护性问题。
随时编辑或建议其他评论方式。