当前位置: 首页 > 知识库问答 >
问题:

Kinesis流和Kinesis火管更新弹性搜索指标

梁丘飞鸾
2023-03-14

我们希望使用kinesis stream和firehose来更新aws管理的elasticsearch集群。我们有数百个不同的索引(对应于我们的DB碎片)需要更新。当创建firehose时,它要求我指定我想要更新的特定索引名。这是否意味着我需要为集群中的每个索引创建一个单独的消防水管?或者是否有一种方法来配置firehose,以便它知道基于数据内容使用什么索引。

此外,我们将有大约20个独立的生成器将数据发送到kinesis流(每个生成器将为10个不同的索引生成数据)。我还需要一个独立的kinesis流为每个生产者。

摘要:20个生产者(EC2实例)->每个生产者将20个不同索引的数据发送到一个kinesis流->kinesis流然后使用消防水管更新一个有200个索引的集群。

共有1个答案

姚鹤龄
2023-03-14

正如你所猜测的,消防软管是这个问题的错误解决方案,至少正如所说的那样。它是为流(而不是生产者)之间有1:1对应关系的情况而设计的和索引。比如clickstream数据或日志聚合。

对于任何解决方案,都需要提供一种机制来标识记录属于哪个索引。您可以通过为每个消息类型创建一个单独的Kinesis流(在这种情况下,您可以使用Firehose)来实现这一点,但这将意味着您的制作者必须决定将每个消息写入哪个流。这可能会给您的生产商带来不必要的复杂性,也可能会增加您的成本,令人无法接受。

因此,假设您希望所有消息都有一个流,那么您需要一个使用者应用程序和某种方法来对这些消息进行分组。您可以在记录本身中包含消息类型(/索引名),或者为此使用分区键。分区键使实现更加容易,因为它保证相同索引的记录将存储在相同的碎片上,但这意味着您的生产者可能会受到限制。

 类似资料:
  • 我正在使用spring数据elasticsearch来执行CRUD操作。 我有一个扩展Elasticsearch chRepository的自定义存储库。 最终,ElasticsearchRepository扩展了CrudRepository,这意味着可以更新现有记录。 问题是,你是如何做到这一点的?我还没有找到一个名为“update()”的方法 我认为做以下事情会有用(代码从https://gi

  • Kinesis Firehose和Kinesis Streams是根据AWS博客中提到的细节来加载流数据的。在消防水管的情况下,没有碎片或维修的概念。在这种情况下,Kinesis消防软管是Kinesis流的替代品吗?

  • Amazon Kinesis是一种托管,可扩展,基于云的服务,允许实时处理每秒流式传输大量数据。 它专为实时应用程序而设计,允许开发人员从多个来源接收任何数量的数据,可以在EC2实例上运行扩展和缩小。 它用于从大型分布式流(如事件日志和社交媒体源)捕获,存储和处理数据。 处理完数据后,Kinesis会同时将其分发给多个消费者。 如何使用亚马逊KCL? 它用于我们需要快速移动数据及其连续处理的情况。

  • 我目前正在使用DynamoDB流,并期待着转向Kinesis流,因为我想控制我喜欢从流中处理的记录数量。 我一直在读有关Kinesis流和lambda的文章。有很多关于Kinesis流和EC2的多用户和KCL等的文章。 null

  • 这是我的结果源看起来的样子。 {“script”:{“inline”:“ctx._source.name='Where's My Crown”“,”lang“:”painless“},”query“:{”match“:{”movie_id“:69}}} 但我有一个错误: {“type”:“illegal_argument_exception”,“reason”:“意外标记['s']应为[{,‘;’

  • 我试图在独立模式下用Apache Spark 2.4.0连接到Kinesis。我将使用以下方法提供我的凭据: 得到这样的错误: 有人能帮忙吗?