Kafka Elasticsearch 连接器时间戳
Kafka Elasticsearch Connector Timestamps
我可以看到这个问题已经讨论了几次 但我认为由于 Elasticsearch 中的重大变化,解决方案已经过时了。
我正在尝试将 Kafka 主题中 Json 中的 long/epoch 字段转换为通过连接器推送的 Elasticsearch 日期类型。
当我尝试添加动态映射时,我的 Kafka 连接更新失败,因为我试图将两个映射应用到一个字段,_doc 和 kafkaconnect。这是围绕版本 6 的重大更改,我相信每个索引只能有一个映射。
{
"index_patterns": [ "depart_details" ],
"mappings": {
"dynamic_templates": [
{
"scheduled_to_date": {
"match": "scheduled",
"mapping": {
"type": "date"
}
}
}
]
}}
我现在专注于通过将字段更改为时间戳、时间或日期来尝试在连接器的源头翻译消息。
"transforms.TimestampConverter.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.TimestampConverter.field" : "scheduled",
"transforms.TimestampConverter.target.type": "Timestamp"
但是,我尝试通过此转换器发送的任何消息都失败了
Caused by: org.apache.kafka.connect.errors.DataException: Java class class java.util.Date does not have corresponding schema type.
at org.apache.kafka.connect.json.JsonConverter.convertToJson(JsonConverter.java:604)
at org.apache.kafka.connect.json.JsonConverter.convertToJson(JsonConverter.java:668)
at org.apache.kafka.connect.json.JsonConverter.convertToJsonWithoutEnvelope(JsonConverter.java:574)
at org.apache.kafka.connect.json.JsonConverter.fromConnectData(JsonConverter.java:324)
at io.confluent.connect.elasticsearch.DataConverter.getPayload(DataConverter.java:181)
at io.confluent.connect.elasticsearch.DataConverter.convertRecord(DataConverter.java:163)
at io.confluent.connect.elasticsearch.ElasticsearchWriter.tryWriteRecord(ElasticsearchWriter.java:285)
at io.confluent.connect.elasticsearch.ElasticsearchWriter.write(ElasticsearchWriter.java:270)
at io.confluent.connect.elasticsearch.ElasticsearchSinkTask.put(ElasticsearchSinkTask.java:169)
这似乎是一件很常见的事情,但我不知道如何通过版本 7 中的此连接器将日期或时间字段导入 Elastic?
Confluent 文档指出 ES 连接器 is currently not supported 与 ES 7.
根据 this issue,在您的连接器配置中将 type.name=kafkaconnect
更改为 type.name=_doc
可能就足够了。
我可以看到这个问题已经讨论了几次
我正在尝试将 Kafka 主题中 Json 中的 long/epoch 字段转换为通过连接器推送的 Elasticsearch 日期类型。
当我尝试添加动态映射时,我的 Kafka 连接更新失败,因为我试图将两个映射应用到一个字段,_doc 和 kafkaconnect。这是围绕版本 6 的重大更改,我相信每个索引只能有一个映射。
{
"index_patterns": [ "depart_details" ],
"mappings": {
"dynamic_templates": [
{
"scheduled_to_date": {
"match": "scheduled",
"mapping": {
"type": "date"
}
}
}
]
}}
我现在专注于通过将字段更改为时间戳、时间或日期来尝试在连接器的源头翻译消息。
"transforms.TimestampConverter.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.TimestampConverter.field" : "scheduled",
"transforms.TimestampConverter.target.type": "Timestamp"
但是,我尝试通过此转换器发送的任何消息都失败了
Caused by: org.apache.kafka.connect.errors.DataException: Java class class java.util.Date does not have corresponding schema type.
at org.apache.kafka.connect.json.JsonConverter.convertToJson(JsonConverter.java:604)
at org.apache.kafka.connect.json.JsonConverter.convertToJson(JsonConverter.java:668)
at org.apache.kafka.connect.json.JsonConverter.convertToJsonWithoutEnvelope(JsonConverter.java:574)
at org.apache.kafka.connect.json.JsonConverter.fromConnectData(JsonConverter.java:324)
at io.confluent.connect.elasticsearch.DataConverter.getPayload(DataConverter.java:181)
at io.confluent.connect.elasticsearch.DataConverter.convertRecord(DataConverter.java:163)
at io.confluent.connect.elasticsearch.ElasticsearchWriter.tryWriteRecord(ElasticsearchWriter.java:285)
at io.confluent.connect.elasticsearch.ElasticsearchWriter.write(ElasticsearchWriter.java:270)
at io.confluent.connect.elasticsearch.ElasticsearchSinkTask.put(ElasticsearchSinkTask.java:169)
这似乎是一件很常见的事情,但我不知道如何通过版本 7 中的此连接器将日期或时间字段导入 Elastic?
Confluent 文档指出 ES 连接器 is currently not supported 与 ES 7.
根据 this issue,在您的连接器配置中将 type.name=kafkaconnect
更改为 type.name=_doc
可能就足够了。