使用 Elasticsearch Sink Connector for Kafka 从下划线分隔的两个值字段创建文档 ID
Create document id from two value fields separated by underscore using Elasticsearch Sink Connector for Kafka
我正在尝试使用 Elasticsearch Sink Connector 将记录从 Kafka 主题加载到 Elasticsearch,但我正在努力按照我希望的方式构建文档 ID。我希望写入 Elasticsearch 的文档 ID 是我的 kafka 主题消息中用下划线分隔的两个值的组合。
例如:
我的 Kafka 主题值具有以下 Avro 模式:
{
"type": "record",
"name": "SampleValue",
"namespace": "com.abc.test",
"fields": [
{
"name": "value1",
"type": [
"null",
{
"type": "int",
"java-class": "java.lang.Integer"
}
],
"default": null
},
{
"name": "value2",
"type": [
"null",
{
"type": "int",
"java-class": "java.lang.Integer"
}
],
"default": null
},
{
"name": "otherValue",
"type": [
"null",
{
"type": "int",
"java-class": "java.lang.Integer"
}
],
"default": null
}
]
}
我希望写入 Elasticsearch 的文档 ID 是 value1 和 value2 的组合值,用下划线分隔。如果 avro 中的给定值看起来像
{"value1": {"int": 123}, "value2": {"int": 456}, "value3": {"int": 0}}
那么我希望 Elasticsearch 的文档 ID 为 123_456
。
我想不出在我的连接器配置中链接转换以创建由下划线分隔的两个值组成的键的正确方法。
我认为没有开箱即用的单一消息转换可以满足您的需求。
您可以使用 Transform API 自己编写,也可以使用 Kafka Streams 或 ksqlDB 等流处理器。
我正在尝试使用 Elasticsearch Sink Connector 将记录从 Kafka 主题加载到 Elasticsearch,但我正在努力按照我希望的方式构建文档 ID。我希望写入 Elasticsearch 的文档 ID 是我的 kafka 主题消息中用下划线分隔的两个值的组合。
例如:
我的 Kafka 主题值具有以下 Avro 模式:
{
"type": "record",
"name": "SampleValue",
"namespace": "com.abc.test",
"fields": [
{
"name": "value1",
"type": [
"null",
{
"type": "int",
"java-class": "java.lang.Integer"
}
],
"default": null
},
{
"name": "value2",
"type": [
"null",
{
"type": "int",
"java-class": "java.lang.Integer"
}
],
"default": null
},
{
"name": "otherValue",
"type": [
"null",
{
"type": "int",
"java-class": "java.lang.Integer"
}
],
"default": null
}
]
}
我希望写入 Elasticsearch 的文档 ID 是 value1 和 value2 的组合值,用下划线分隔。如果 avro 中的给定值看起来像
{"value1": {"int": 123}, "value2": {"int": 456}, "value3": {"int": 0}}
那么我希望 Elasticsearch 的文档 ID 为 123_456
。
我想不出在我的连接器配置中链接转换以创建由下划线分隔的两个值组成的键的正确方法。
我认为没有开箱即用的单一消息转换可以满足您的需求。
您可以使用 Transform API 自己编写,也可以使用 Kafka Streams 或 ksqlDB 等流处理器。