我正在使用confluentinc / cp-kafka-connect docker映像。 我正在尝试将具有Elasticsearch ID的JSON文件发送到kafka。
{"_id":10000725, "_source": {"createdByIdentity":"tu_adminn","createdBy":"Admin Testuser"}}
这是我的连接器
{
"name": "test-connector",
"config": {
"connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
"tasks.max": "1",
"topics": "andrii",
"key.ignore": "false",
"schema.ignore": "true",
"connection.url": "http://elasticsearch:9200",
"type.name": "test-type",
"name": "elasticsearch-sink"
}
}
当我使用key.ignore = true时,它会生成一些奇怪的ID。 如何准确传递我的ID和来源?
答案 0 :(得分:2)
如果您指定key.ignore=true
,则Kafka Connect将使用消息的kafka主题,分区和偏移量的复合键-这是您看到的“怪异ID”。
如果要为创建的Elasticsearch文档使用自己的ID,可以设置key.ignore=false
,Kafka Connect将使用Kafka消息的密钥作为ID。
如果您的Kafka消息没有适合您要执行的操作的密钥,则需要进行设置。一种选择是使用类似KSQL的内容:
CREATE STREAM target AS SELECT * FROM source PARTITION BY _id
免责声明:我为Confluent工作,该公司是开源KSQL项目背后的公司