Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 使用Elasticsearch Sink Connector for Kafka从由下划线分隔的两个值字段创建文档id_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Apache Kafka_Apache Kafka Connect - Fatal编程技术网 elasticsearch 使用Elasticsearch Sink Connector for Kafka从由下划线分隔的两个值字段创建文档id,elasticsearch,apache-kafka,apache-kafka-connect,elasticsearch,Apache Kafka,Apache Kafka Connect" /> elasticsearch 使用Elasticsearch Sink Connector for Kafka从由下划线分隔的两个值字段创建文档id,elasticsearch,apache-kafka,apache-kafka-connect,elasticsearch,Apache Kafka,Apache Kafka Connect" />

elasticsearch 使用Elasticsearch Sink Connector for Kafka从由下划线分隔的两个值字段创建文档id

elasticsearch 使用Elasticsearch Sink Connector for Kafka从由下划线分隔的两个值字段创建文档id,elasticsearch,apache-kafka,apache-kafka-connect,elasticsearch,Apache Kafka,Apache Kafka Connect,我试图使用Elasticsearch接收器连接器将卡夫卡主题中的记录加载到Elasticsearch,但我很难按照我希望的方式构造文档ID。我希望写入Elasticsearch的文档id是由卡夫卡主题消息中的两个值组成的,两个值之间用下划线分隔 例如: 我的卡夫卡主题值具有以下Avro模式: { "type": "record", "name": "SampleValue", "namespac

我试图使用Elasticsearch接收器连接器将卡夫卡主题中的记录加载到Elasticsearch,但我很难按照我希望的方式构造文档ID。我希望写入Elasticsearch的文档id是由卡夫卡主题消息中的两个值组成的,两个值之间用下划线分隔

例如:

我的卡夫卡主题值具有以下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是由下划线分隔的value1value2的组合值。如果avro中的给定值

{"value1": {"int": 123}, "value2": {"int": 456}, "value3": {"int": 0}}
然后我希望Elasticsearch的文档id为
123\u 456


我想不出在连接器配置中链接转换的正确方法来创建一个键,该键由两个用下划线分隔的值组成。

我认为没有一个现成的消息转换可以满足您的要求


您可以使用Transform API编写自己的转换,也可以使用Kafka Streams或ksqlDB等流处理器。

另一个选项是将此转换委托给弹性堆栈层。您可以创建一个执行数据更改的摄取管道,然后在Elasticsearch中创建一个策略,为给定索引执行该管道。理想情况下,Kafka Connect的Elasticsearch连接器应该有一个属性来定义要执行的摄取管道。这里有更多信息:另一种选择是在Kafka和Elasticsearch之间使用Logstash和groks,但这将极大地改变您的架构。