>

원래의 경우 답변이 없었기 때문에이 질문을하고 있습니다 : 엘라스틱 카프카 커넥터, ID 생성 .

저도 비슷한 상황입니다.

kafkaconnect를 통해 요청을 보낼 때 단일 필드에 대한 레코드를 작성하지만 여러 필드에 대한 레코드를 작성하는 탄력적 검색 테이블

예외 가져 오기"키는 문서 ID로 사용되며 null 일 수 없습니다"

내 커넥터 구성 :

{
 "name": "test-connector33",
 "config": {
 "connector.class":"io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
 "tasks.max": "1",
 "topics": "test-connector33",
 "connection.url": "http://localhost:9200",
 "type.name": "aggregator",
 "schema.ignore": "true",
 "topic.schema.ignore": "true",
  "topic.key.ignore": "false",
 "value.converter": "org.apache.kafka.connect.json.JsonConverter",
 "value.converter.schemas.enable": "false", 
 "key.converter": "org.apache.kafka.connect.json.JsonConverter",
 "key.converter.schemas.enable": "false",
 "key.ignore":"false",
 "name": "test-connector33",
"transforms": "InsertKey,extractKey",
"transforms.InsertKey.type":"org.apache.kafka.connect.transforms.ValueToKey",
"transforms.InsertKey.fields":"customerId,city",
"transforms.extractKey.type":"org.apache.kafka.connect.transforms.ExtractField$Key",
"transforms.extractKey.field":"customerId,city"
}}

이 문제를 해결하는 방법이 있습니까?

미리 감사합니다!


  • 답변 # 1

    org.apache.kafka.connect.transforms.ExtractField$Key  단일 필드 만 지원합니다.

    JSON 객체가 HashMap<String, Object> 인 것처럼 가장하십시오. . customerId,city 필드를 찾을 수 없습니다 그래서 map.get(field)  작업은 null 를 리턴합니다. 따라서 필드를 null로 설정하십시오.

    콘솔 제작자를 통해 키를 보내려면 --property print.key=true 를 추가하면됩니다.  플래그로 입력 한 다음 키를 입력하고 tab을 누른 다음 값을 입력하십시오. 프로세스에 데이터를 에코하려면 --property key.separator='|' 를 설정할 수도 있습니다 수직 막대의 경우 --property parse.key=true 를 추가하십시오.

관련 자료

  • 이전 내 Google Compute Engine 인스턴스의 산발적 인 Google 404
  • 다음 다른 브랜치의 이전 커밋 중 일부를 잃지 않고 git reset을 수행하는 방법