kafka-connect-elasticsearch如何将多个主题路由到同一连接器中的同一elasticsearch索引?

时间:2020-05-20 00:48:24

标签: elasticsearch apache-kafka-connect

尝试使用以下配置创建elasticsearch接收器连接器,创建成功,但是当在“ my.topic.one”上生成消息时,ES接收器连接器在尝试创建名称为“ my.topic.one”的索引时失败“:”无法创建索引'my.topic.one'“(我用来连接ES的用户没有故意创建索引的权限)。为什么要尝试创建新索引以及如何使连接器索引到先前创建的“ elasticsearch_index_name”?

{
            "type.name": "_doc", 
            "tasks.max": "1", 
            "connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector", 
            "connection.url": "http://elasticsearch-service:9200", 
            "behavior.on.null.values": "delete", 
            "key.ignore": "false", 
            "write.method": "upsert", 
            "key.converter": "org.apache.kafka.connect.storage.StringConverter", 
            "key.converter.schemas.enable": "false", 
            "value.converter": "org.apache.kafka.connect.storage.StringConverter", 
            "value.converter.schemas.enable": "false", 
            "topics": "my.topic.one,my.topic.two", 
            "transforms": "renameTopic",
            "transforms.renameTopic.type": "org.apache.kafka.connect.transforms.RegexRouter", 
            "transforms.renameTopic.regex": ".*",
            "transforms.renameTopic.replacement": "elasticsearch_index_name"
    } 

更新:即使我仅在“ topics”属性中使用一个主题,并在“ renameTopic.regex”中使用相同的主题名称,ES接收器连接器也会引发错误,如下所示,所有属性均保持不变。

"topics": "my.topic.one",
"transforms.renameTopic.regex": "my.topic.one"

1 个答案:

答案 0 :(得分:0)

在ES接收器连接器配置中添加以下属性,解决了手头的问题:

"auto.create.indices.at.start": "false"