【问题标题】:Best way to send data from Dynamodb to Amazon Elasticsearch将数据从 Dynamodb 发送到 Amazon Elasticsearch 的最佳方式
【发布时间】:2017-04-28 09:24:13
【问题描述】:

我想知道将数据从 dynamoDB 发送到 elasticsearch 的最佳方式是什么。

  1. AWS SDK js。 https://github.com/Stockflare/lambda-dynamo-to-elasticsearch/blob/master/index.js

  2. DynamoDB logstash 插件:https://github.com/awslabs/logstash-input-dynamodb

【问题讨论】:

  • “最佳”指的是什么?灵活性?速度?可靠性? ...
  • @Val 可靠性是重点。速度将是第二个。
  • 第二个选项似乎不再维护,仅适用于旧版本的 Logstash。另一个选项是 github.com/tellapart/logstash-output-dynamodb 不过,第一个选项似乎更新。
  • 我已经创建了一个 aws-elasticsearch-model npm 包,它就是这样做的。您使用几行代码创建一个 lambda,将其附加到 dynamoDB 流,它将与 elasticsearch 服务同步所有更改。如果你没问题 with 24 hours retention period 并且你的数据不是很关键,你就不需要 firehose。

标签: elasticsearch logstash amazon-dynamodb aws-sdk


【解决方案1】:

关注此 AWS 博客。他们详细描述了它是如何以及应该如何完成的。

https://aws.amazon.com/blogs/compute/indexing-amazon-dynamodb-content-with-amazon-elasticsearch-service-using-aws-lambda/


编辑

我假设您使用 AWS elasticsearch 托管服务。

  1. 您应该使用 Dynamodb 流来监听更改(其中,您将有新项目添加到 dynamodb 的事件)。
  2. 创建新的 Kinesis Firehose 流,该流设置为将所有记录输出到您的 elasticsearch 实例。
  3. 创建一个由 DynamoDB 流中的新项目的事件触发的新 lambda。
  4. lambda 将获取唯一的 DynamoDB 记录 ID,以便您获取它、获取记录有效负载并将其提取到 Firehose 流端点。
  5. 根据您的 DynamoDB 记录大小,您可以启用将记录的有效负载包含在流项目中的选项,因此您无需从表中获取它并使用您设置的预置容量。

【讨论】:

  • 不鼓励使用只是链接到非现场博客文章的答案。
  • 谢谢@johni,但我认为这个链接已被弃用。我没有找到 dynamodb-to-elasticsearch Lambda 蓝图。我按照那个链接,然后我意识到蓝图不在那里。然后我看到了这个链接:forums.aws.amazon.com/thread.jspa?threadID=240647。这就是我在这里提出问题的原因:)
  • 为什么我们需要使用firehose?为什么我们不能直接使用 lambda 将数据输入到 elasticsearch 中?
  • 几个原因; 1. 规模——你的 lambda 可能会产生大量的记录,如果每个 lambda 都试图并行地喂给 ES——你会遇到很多失败; 2. 重试机制——firehose 会对 ES 的摄取进行本地重试,如果用尽,最终将其存储,你不想暗示。在你的 lambda;
【解决方案2】:

我建议在您的 DynamoDB 上创建一个 AWS Lambda 流,然后从 Lambda 中获取该数据并将其写入 ElasticSearch。

【讨论】:

  • 如何将未触及的数据转储到弹性搜索中?
  • 你能解释一下你的意思吗,我不明白你所说的“untouched”是什么意思
  • 假设我是在我的用户向表中添加数据后设置的,并且我想将预先存在的数据同步到弹性中?
  • 然后您可以创建一个脚本来读取每条记录,然后手动将它们写入lamba。您也可以为“migrationDate”添加一个新的 Dynamo 字段并更新每条记录,这会导致将更新的记录发送到 lambda。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多