如何将预先存在的数据从DynamoDB添加到Elasticsearch?

时间:2017-09-08 08:36:18

标签: elasticsearch amazon-dynamodb amazon-dynamodb-streams

我按照this blog post.中的说明设置了Elasticsearch Service和DynamoDb流 现在我需要将预先存在的数据从DynamoDB添加到Elasticsearch。

我看到“索引预先存在的内容”是文章的一部分,但我不知道如何处理Python代码,在哪里执行它。

在这种情况下,添加预先存在的数据的最佳选择是什么?

2 个答案:

答案 0 :(得分:1)

this post中描述了如何将预先存在的数据从DynamoDB添加到Elasticsearch。

答案 1 :(得分:0)

将现有项目填充到Elasticsearch并不容易,因为dynamodb流适用于项目更改而不适用于现有记录,

这里有一些利弊的方法

  1. 从dynamodb扫描所有现有项目并发送到elasticsearch

    我们可以扫描所有现有项目并运行ec2计算机上托管的python代码,以将数据发送到es。

    Pros:

    a。简单的解决方案,不需要太多。

    Cons:

    a。无法在lambda函数上运行,因为如果记录数过多,作业可能会超时。

    b。这种方法是一次性的,不能用于增量更改(假设我们要随着动态数据更改而不断更新es。)

  2. 使用动力发电机流

    我们可以启用dynamodb流并按照here中的说明构建管道。 现在,我们可以更新现有项目的一些标志,以便所有记录都通过管道,并且数据将流至es。

    Pros:

    a。该管道可用于动态dynamodb更改。

    b。无需重复代码,也无需费时,每次需要在es中更新一项时,我们都会更新该项并在es中对其进行索引。

    c。没有多余的,未经测试的一次性代码。 (软件世界中维护代码的巨大问题。)

    Cons:

    a。更改Prod数据可能是危险的事情,根据使用情况,可能不允许这样做。

  3. 这是对上述方法的略微修改

    代替在prod表中更改项目,我们可以创建一个Temporary表并在Temporary表上启用流。利用第二种方法中提到的管道。然后将项目从prod表复制到Temporary表,数据将流过现有管道并在ES中建立索引。

    Pros:

    a。不需要更改Prod数据,该管道也可以用于增量更改。

    b。与方法2相同。

    Cons:

    a。将数据从一个表复制到另一个表可能要花费很多时间,具体取决于数据大小。

    b。将数据从一个表复制到另一个表是一次性脚本,因此存在可维护性问题。

随时编辑或建议其他评论方式。