gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:56:02 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

以下是一些有利有弊的方法

  1. 从dynamodb中扫描所有存在的项目并发送到elasticsearch

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

    优点:

    一个。简单的解决方案,没有太多要求。

    缺点:

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

    这种方法更像是一次性的事情,不能用于增量更改,(假设我们希望在 dynamodb 数据更改时不断更新 es。)

  2. 使用 dynamodb 流

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

    优点:

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

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

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

    缺点:

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

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

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

    优点:

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

    与方法 2 相同。

    缺点:

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

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

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

关于elasticsearch - 如何将预先存在的数据从 DynamoDB 添加到 Elasticsearch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com