Philはコメントで - topic-partition-offset
はユニークでなければならないので、私はこれがどのようにデータ損失を引き起こしているのか分かりません。
に関係なく、コネクタにキーを生成させるか、自分でキーを定義することができます(key.ignore=false
)。他の選択肢はありません。
Kafka ConnectでSingle Message Transformationsを使用すると、データのフィールドからキーを派生させることができます。 Elasticsearchフォーラムのメッセージに基づいて、id
があなたのデータにあるように見えます。もしそれがユニークであれば、それをあなたのキーとして、そしてあなたのElasticsearchドキュメントIDとしても設定できます。ここではSMTでキーを定義する例です:私はそれを見ると同じくらい
# Add the `id` field as the key using Simple Message Transformations
transforms=InsertKey, ExtractId
# `ValueToKey`: push an object of one of the column fields (`id`) into the key
transforms.InsertKey.type=org.apache.kafka.connect.transforms.ValueToKey
transforms.InsertKey.fields=id
# `ExtractField`: convert key from an object to a plain field
transforms.ExtractId.type=org.apache.kafka.connect.transforms.ExtractField$Key
transforms.ExtractId.field=id
(https://www.confluent.io/blog/building-real-time-streaming-etl-pipeline-20-minutes/経由)
あなたのユースケースをもっと説明できますか?コネクタの分析モードまたはキー値モードを使用していますか? 'topic-partition-offset'は各レコードに対してユニークでなければならず、コネクターはElasticに発行される各レコードを発行しています。どのデータが失われていますか?あなたがリンクしているフォーラムは、あなたが失っていることを言っていません。 – Phil