有没有办法让 Kafka-Avro 接受来自生产者的所有 key ,即使它们没有在生产者模式中定义?目前我正在运行制片人
./bin/kafka-avro-console-producer --broker-list localhost:9092 --topic elasticsearch-sink --property value.schema='{"type":"record","name":"myRecord", "fields":[{"name":"esKey", type":"string"}]}'
并传入
{"esKey":"keyExample", "undefinedKey": "empty"}
消费者只会显示
{"esKey":"keyExample"}
因此未定义的键也不会发送到 ElasticSearch。
由于输入非常大且不可预测,我宁愿不定义模式。
编辑:使用 Confluent 4.1.1
最佳答案
您的架构不允许其他字段
"fields":[{"name":"esKey", type":"string"}]
您需要添加
undefinedKey
进入此字段以显示该字段。基本上,Avro 解串器没有理由认为应该存在其他字段。I'd rather not define the schema due to the input being very large and not predictable.
不清楚这意味着什么,但如果您有不可预测的数据,那么也许 Avro 或任何严格定义的模式协议(protocol)不是最佳选择?
关于elasticsearch - kafka avro elasticsearch消费者允许未知键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54599608/