![](/img/trans.png)
[英]Kafka Connect Elasticsearch Sink Connector with custom _routing
[英]Customize Kafka Connect - ElasticSearch Sink Connector
我遇到了Kafka主題,其中有多種類型的消息流入並使用Kafka Connect寫入Elastic Search。 在我必須將一組唯一的消息分成唯一的索引之前,流看起來不錯。 即我必須基於字段(JSON消息)獲取新數據集的新索引。
如何配置/自定義Kafka連接以為我做同樣的事情? 每個消息都包含一個表示消息類型和時間戳的字段。
示例Json看起來像:Sample1: {"log":{"data":"information", "version":"1.1"}, "type":"xyz", "timestamp":"2019-08-28t10:07:40.370z", "value":{}}
,
Sample2: {"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插件。
感謝幫助。
您可以使用自定義的單一消息轉換(SMT)來完成此操作,您需要自己編寫 。 通過根據消息的內容更改消息的主題,可以將其路由到其他Elasticsearch索引。
目前,Apache Kafka附帶有一個SMT,可以重命名整個主題( RegExRouter
)或添加時間戳( TimestampRouter
)。 您可能會發現這些是編寫自己的有用的起點。
備選方案如@wardzniak在他的評論中建議的那樣-在使用Kafka Connect將生成的單獨主題發送到Elasticsearch之前,使用流處理(例如Kafka Streams,KSQL)對源主題進行預處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.