elasticsearch 弹性搜索-Kafka Connect未将密钥的正确值发布为文档id,elasticsearch,apache-kafka,apache-kafka-connect,elasticsearch,Apache Kafka,Apache Kafka Connect" /> elasticsearch 弹性搜索-Kafka Connect未将密钥的正确值发布为文档id,elasticsearch,apache-kafka,apache-kafka-connect,elasticsearch,Apache Kafka,Apache Kafka Connect" />

elasticsearch 弹性搜索-Kafka Connect未将密钥的正确值发布为文档id

elasticsearch 弹性搜索-Kafka Connect未将密钥的正确值发布为文档id,elasticsearch,apache-kafka,apache-kafka-connect,elasticsearch,Apache Kafka,Apache Kafka Connect,我正在尝试使用kafka connect将数据从kafka主题发布到弹性搜索。 下面是我的配置 { “名称”:“elasticsearch_sink_19”, “配置”:{ “connector.class”:“io.confluent.connect.elasticsearch.ElasticsearchSinkConnector”, “tasks.max”:“1”, “主题”:“k-connect-status”, “connection.url”:”http://docker.for.ma

我正在尝试使用kafka connect将数据从kafka主题发布到弹性搜索。 下面是我的配置

{
“名称”:“elasticsearch_sink_19”,
“配置”:{
“connector.class”:“io.confluent.connect.elasticsearch.ElasticsearchSinkConnector”,
“tasks.max”:“1”,
“主题”:“k-connect-status”,
“connection.url”:”http://docker.for.mac.host.internal:9200",
“type.name”:“connectstatus”,
“behavior.on.malformed.documents”:“忽略”,
“错误.公差”:“全部”,
“errors.log.enable”:“true”,
“errors.log.include.messages”:“true”,
“value.converter”:“org.apache.kafka.connect.json.JsonConverter”,
“key.converter”:“org.apache.kafka.connect.storage.StringConverter”,
“validate.non.null”:“false”,
“key.ignore”:“true”,
“schema.ignore”:“true”,
value.converter.schemas.enable:“false”
}
}
“key.ignore”true是使用错误的_id(不是预期的_id)发布数据

主题中的数据:

格式:JSON

{
“划船时间”:15917433742,
“ROWKEY”:“状态-连接器-弹性搜索\u水槽\u 31”,
“状态”:“正在运行”,
“跟踪”:空,
“工人id”:“连接:8083”,
“一代”:2
}
示例弹性搜索输出:

{
“_索引”:“k-connect-status”,
“_类型”:“连接状态”,
“_id”:“k-connect-status+1+17”,
“_分数”:1.0,
“_来源”:{
“一代”:11,
“跟踪”:空,
“状态”:“未分配”,
“工人id”:“连接:8083”
}
}
预期弹性搜索输出

{
“_索引”:“k-connect-status”,
“_类型”:“连接状态”,
“\u id”:“status-connector-elasticsearch\u sink\u 31”,
“_分数”:1.0,
“_来源”:{
“一代”:11,
“跟踪”:空,
“状态”:“未分配”,
“工人id”:“连接:8083”
}
}
ROWKEY作为弹性搜索的_id。至少有附加了主题名称的行键

“key.ignore”false不发布任何数据

“key.ignore”:“true”
正在做它应该做的事情。它忽略Kafka消息的键,而是使用topic+partition+offset的元组,这是您在引用的Elasticsearch输出中可以看到的:

  "_id" : "k-connect-status+1+17",
如果要使用卡夫卡信息的密钥,需要设置
“key.ignore”:“false”

查看本教程了解更多信息,并查看有关键的说明/

  • “key.ignore”:“true”
    正在做它应该做的事情。它忽略Kafka消息的键,而是使用topic+partition+offset的元组,这是您在引用的Elasticsearch输出中可以看到的:

      "_id" : "k-connect-status+1+17",
    
    如果要使用卡夫卡信息的密钥,需要设置
    “key.ignore”:“false”

    查看本教程了解更多信息,并查看有关键的说明/

    • 默认情况下,通过连接:主题、分区和偏移来创建文档_id。它发生在你的位置上。 您应该设置
      键。忽略
      false上的
      并传递正确的键

      若您需要从消息值中提取一些信息并将其放入密钥中,则应使用适当的。我想您可以试试。

      默认情况下,通过连接主题、分区和偏移来创建文档id。它发生在你的位置上。 您应该设置
      键。忽略
      false上的
      并传递正确的键


      若您需要从消息值中提取一些信息并将其放入密钥中,则应使用适当的。我想你可以试试。

      为什么
      31
      应该在
      \u id
      中?您希望实现哪种格式的
      \u id
      ?在弹性搜索中,消息的行键应该是\u id。为什么
      31
      应该在
      \u id
      中?您希望实现哪种格式的
      \u id
      ?消息的ROWKEY应该是弹性搜索上的_id。设置“key.ignore”:“false”不会将任何消息发布到弹性搜索。我没有看到任何例外。奇怪!JSON格式的值和键为字符串是否有问题?我会删除
      “errors.tolerance”:“all”、
      “behavior.on.malformed.documents”:“ignore”
      ,并检查日志是否显示任何故障。如果键是String,则使用StringConverter。消息的值部分将不相关。问题在于弹性搜索的版本不兼容。通过将ES降级至6.7.2解决。异常:{“类型”:“非法参数\u异常”,“原因”:“操作/元数据行[1]包含未知参数[\u版本]”}您使用的是哪个版本的Elasticsearch和Kafka Connect ES连接器?带连接器v5.5的ES 7.5应能正常工作设置“key.ignore”:“false”不会向Elastic Search发布任何消息。我没有看到任何例外。奇怪!JSON格式的值和键为字符串是否有问题?我会删除
      “errors.tolerance”:“all”、
      “behavior.on.malformed.documents”:“ignore”
      ,并检查日志是否显示任何故障。如果键是String,则使用StringConverter。消息的值部分将不相关。问题在于弹性搜索的版本不兼容。通过将ES降级至6.7.2解决。异常:{“类型”:“非法参数\u异常”,“原因”:“操作/元数据行[1]包含未知参数[\u版本]”}您使用的是哪个版本的Elasticsearch和Kafka Connect ES连接器?带连接器v5.5的ES 7.5应能正常工作