Я пытаюсь использовать "write.method" для коннектора Elasticsearch (ES) kafka. Из моего приложения kafka streams я пишу свой документ, который хочу сохранить, на kafka topi c, с которого ES-соединитель настроен для чтения. Я использую объекты avro в качестве значений kafka для этой топи c. Определение AVRO моего документа выглядит следующим образом:
{
"type": "record",
"name": "Document",
"fields": [
{
"name": "id",
"type": ["null", "string"],
},
{
"name": "name",
"type": ["null", "string"]
},
{
"name": "address",
"type": ["null", "string"]
}
]
}
Документ содержит только идентификатор и имя, а иногда и просто адрес. имя и имя перезаписываются, когда я просто отправляю адрес и наоборот. Я установил behavior.on.null.values
на ignore
, надеясь, что ES-соединитель будет игнорировать нулевые значения идентификатора и имени, но это не сработает, как ожидалось.
Хотя, когда я использую два различных объекта AVRO на моем kafka topi c, первый из которых содержит только идентификатор и имя, а другой - только адрес, поведение режима upsert является ожидаемым. Но для того же kafka topi c, чтобы разрешить несколько определений объектов AVRO, мне нужно установить режим совместимости topi c на NONE, что не идеально.
Как правильно решить эту проблему?