kafka avro elasticsearch消费者允许未知密钥

时间:2019-02-08 20:18:11

标签: elasticsearch apache-kafka avro confluent

有没有办法允许Kafka-Avro接受来自生产者的所有密钥,即使它们没有在生产者模式中定义?目前,我正在使用

运行生产者
./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

1 个答案:

答案 0 :(得分:0)

您的架构不允许其他字段

"fields":[{"name":"esKey", type":"string"}]

您需要为此添加undefinedKey才能显示该字段。基本上,Avro解串器没有理由认为其他字段应该存在。

  

由于输入量很大且不可预测,我宁愿不定义架构。

不清楚这意味着什么,但是如果您具有不可预测的数据,那么也许不是Avro或任何严格定义的架构协议,不是最佳选择吗?