6

我按照这篇博文中的描述设置了 Elasticsearch Service 和 DynamoDb 流。 现在我需要将预先存在的数据从 DynamoDB 添加到 Elasticsearch。

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

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

4

2 回答 2

7

将现有项目填充到弹性搜索并不简单,因为 dynamodb 流适用于项目更改而不是现有记录,

这里有一些优点和缺点的方法

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

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

    Pros:

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

    Cons:

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

    湾。这种方法更像是一次性的,不能用于增量更改,(假设我们希望随着 dynamodb 数据的变化不断更新 es。)

  2. 使用 dynamodb 流

    我们可以启用 dynamodb 流并按照此处的说明构建管道。现在我们可以更新现有项目的一些标志,以便所有记录流过管道,数据进入 es。

    Pros:

    一个。该管道可用于增量 dynamodb 更改。

    湾。没有代码重复或一次努力,每次我们需要更新 es 中的一项时,我们都会更新该项目并在 es 中建立索引。

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

    Cons:

    一个。更改 Prod 数据可能是一件危险的事情,根据用例可能不允许。

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

    我们可以创建一个临时表并在临时表上启用流,而不是更改 prod 表中的项目。利用第二种方法中提到的管道。然后将项目从prod表复制到临时表,数据将流经现有管道并在ES中获得索引。

    Pros:

    一个。不需要更改 Prod 数据,并且此管道也可用于增量更改。

    湾。与方法2相同。

    Cons:

    一个。根据数据大小,将数据从一个表复制到另一个可能需要很多时间。

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

随时在评论中编辑或建议其他方法。

于 2018-10-13T14:34:00.523 回答
-1

这篇文章中描述了如何将预先存在的数据从 DynamoDB 添加到 Elasticsearch。

于 2017-09-18T07:37:22.407 回答