自定义Kafka Connect-ElasticSearch接收器连接器

时间:2019-09-04 08:29:43

标签: elasticsearch apache-kafka apache-kafka-connect

我遇到了Kafka主题,其中有多种消息流入并使用Kafka Connect写入Elastic Search。在我必须将一组唯一的消息分成唯一的索引之前,流看起来不错。即我必须基于字段(是JSON消息)获取新数据集的新索引。

如何配置/自定义Kafka连接以为我做同样的事情?每封邮件都包含一个代表邮件类型和时间戳的字段。

示例Json如下所示: 样本1:{"log":{"data":"information", "version":"1.1"}, "type":"xyz", "timestamp":"2019-08-28t10:07:40.370z", "value":{}}

示例2:{"log":{"data":"information", "version":"1.1", "value":{}}, "type":"abc", "timestamp":"2019-08-28t10:07:40.370z" }

我想自定义/配置Kafka connect ES接收器,以便将Sample1文档写入索引“ xyz.20190828”,并将Sample2文档写入索引“ abc.20190828”。

我正在使用Kafka-2.2.0和confluentinc-kafka-connect-elasticsearch-5.2.1插件。

感谢帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用write yourself需要的自定义单消息转换(SMT)来执行此操作。通过根据消息的内容更改消息的主题,可以将其路由到其他Elasticsearch索引。

当前,Apache Kafka附带了一个SMT,它可以重命名整个主题(Delay)或添加时间戳记(RegExRouter)。您可能会发现这些是编写自己的有用的起点。

@wardzniak在其评论中建议的替代方法是-在使用Kafka Connect将生成的单独主题发送到Elasticsearch之前,使用流处理(例如Kafka Streams,KSQL)对源主题进行预处理。