【问题标题】:Confluent Kafka connect ElasticSearch ID document creationConfluent Kafka 连接 ElasticSearch ID 文档创建
【发布时间】:2018-09-23 19:37:30
【问题描述】:

我正在使用 kafka connect elasticsearch 连接器将数据从主题写入 ElasticSearch 索引。主题消息的 key 和 value 都是 json 格式。由于以下错误,连接器无法启动:

    org.apache.kafka.connect.errors.DataException: MAP is not supported as the document id.

以下是我的消息格式(键|值):

    {"key":"OKOK","start":1517241690000,"end":1517241695000}     |   {"measurement":"responses","count":9,"sum":1350.0,"max":150.0,"min":150.0,"avg":150.0} 

以下是我用来创建连接器的 POST 请求的正文:

{
 "name": "elasticsearch-sink-connector",
 "config": {
 "connector.class":"io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
 "tasks.max": "1",
 "topics": "output-topic-elastic",
 "connection.url": "http://elasticsearch:9200",
 "type.name": "aggregator",
 "schemas.enable": "false",
 "topic.schema.ignore": "true",
 "topic.key.ignore": "false",
 "value.converter": "org.apache.kafka.connect.json.JsonConverter",
 "value.converter.schemas.enable": "false", 
 "key.converter": "org.apache.kafka.connect.json.JsonConverter",
 "key.converter.schemas.enable": "false", 
 "key.ignore":"false",
 "topic.index.map": "output-topic-elastic:aggregator",
 "name": "elasticsearch-sink",
 "transforms": "InsertKey",
"transforms.InsertKey.type":"org.apache.kafka.connect.transforms.ValueToKey",
"transforms.InsertKey.fields":"key"
}}

任何帮助将不胜感激。我在 stackoverflow 1 上发现了一个类似的问题,但我没有找到答案。

ES document ID creation

【问题讨论】:

    标签: elasticsearch apache-kafka apache-kafka-connect


    【解决方案1】:

    你还需要ExtractField在那里

    "transforms": "InsertKey,extractKey",
    "transforms.InsertKey.type":"org.apache.kafka.connect.transforms.ValueToKey",
    "transforms.InsertKey.fields":"key",
    "transforms.extractKey.type":"org.apache.kafka.connect.transforms.ExtractField$Key",
    "transforms.extractKey.field":"key"
    

    查看this post 了解更多详情。

    【讨论】:

    • 感谢您回复 Robin,我也尝试过,但也没有用。我终于将密钥修改为纯字符串,然后连接器工作正常,但我真的很想知道如何解决最初的问题。
    • 可能是ValueToKey 无法从现有的key 中获取字段。让我检查一下。
    • 是的,我猜 ValueToKey 只能从消息的值中获取字段(但不能从键中获取)
    • @ardlema 你是如何让它与密钥一起工作的?我有同样的问题,我正在尝试将主题的键映射到 elasticsearch 的文档 ID,但它不起作用......我的键是一个字符串,但它仍然不起作用。
    • @user1945064 你最好发布一个新问题,以便人们可以在那里帮助你。
    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2020-05-04
    • 2021-06-08
    • 2020-02-05
    • 2022-12-16
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多