elasticsearch - kafka avro elasticsearch消费者允许未知键

标签 elasticsearch apache-kafka avro confluent-platform

有没有办法让 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/

相关文章:

elasticsearch - 在 Elasticsearch 中正确排序完全匹配和 "beginning with"(前缀)

elasticsearch - 使用elasticsearch在分析器中定义一个停用词表

kubernetes - 从 kubernetes 上运行的 Spring Boot 应用程序访问 kafka

java - 在运行时将 String 转换为正确的 avro 类型

json - 是否可以为一组 map 创建 Avro 模式?

Java 客户端找不到主节点 : MasterNotDiscoveredException waited for [1m]

symfony - Elasticsearch PHP最长前缀匹配

elasticsearch - 在 kafka elasticsearch 连接器中使用 elasticsearch 生成的 ID

apache-kafka - Confluence Cloud 上的 Apache Kafka - 分区主题和消费者滞后中的不连贯偏移

java - 如何使用 HTTP 作为传输读取通过 Avro 序列化的二进制数据?