无法将主题映射到kafka elasticsearch连接器中的指定索引

时间:2020-01-10 12:06:04

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

试图将主题“名称:localtopic”映射到索引“名称:indexoftopic”, 其在弹性搜索“ localtopic and indexoftopic”中创建了两个新索引,并且仅在主题名称索引“ localtopic”中可见主题数据,连接器未显示错误(分布式模式)

我的配置是

 "config" : {
  "connector.class" : "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
  "tasks.max" : "1",
  "topics" : "localtopic", 
  "topic.index.map" : "localtopic:indexoftopic",
  "connection.url" : "aws elasticsearch url",
  "type.name" : "event",
  "key.ignore" : "false",
  "schema.ignore" : "true",
  "schemas.enable" : "false",
  "transforms" : "InsertKey,extractKey",
  "transforms.InsertKey.type" : "org.apache.kafka.connect.transforms.ValueToKey",
  "transforms.InsertKey.fields" : "event-id",
  "transforms.extractKey.type" : "org.apache.kafka.connect.transforms.ExtractField$Key",
  "transforms.extractKey.field" : "event-id"
 }

索引名称:indexoftopic是在elasticsearch中创建的,但数据可以通过index_name:localtopic看到 kafkaversion:2.3连接器版本:5 elasticsearchversion:3.2.0

即使在日志INFO中-topic.regex =“”,我也不知道他的选项,有人可以建议。如何使用这个???

2 个答案:

答案 0 :(得分:1)

下面为我工作,但是,我只将1个主题映射到另一个索引名称

"transforms": "addSuffix",  
"transforms.addSuffix.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.addSuffix.regex": "topic1.*",
"transforms.addSuffix.replacement": "index1",

因此,通过上述转换,任何主题,例如topic1, topic1-test, topic1<anystring> 将被映射到index1

或者,您也可以在替换中使用主题名称,只需更改下面的最后两行,即可选择

    "transforms.addSuffix.regex": "topic.*",
    "transforms.addSuffix.replacement": "index$1",

基本上,您可以使用正则表达式替换部分或完整主题名称。

答案 1 :(得分:0)

如果您查看配置选项,建议您改用RegexRouter转换

topic.index.map

现在不推荐使用此选项。将来的版本可能会完全删除它。请使用单个消息转换(例如RegexRouter)将主题名称映射到索引名称。