【发布时间】:2022-06-15 06:44:33
【问题描述】:
我有一个带有 JSON 数据的 Kafka 主题。现在我尝试使用新的“Java API 客户端”(https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/7.17/index.html)将这些 JSON 字符串发送到 ES 主题,但我遇到了解析器异常:
co.elastic.clients.elasticsearch._types.ElasticsearchException: [es/index] failed: [mapper_parsing_exception] failed to parse
at co.elastic.clients.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:281)
at co.elastic.clients.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:147)
at co.elastic.clients.elasticsearch.ElasticsearchClient.index(ElasticsearchClient.java:953)
此异常发生在以下代码的最后一行:
final IndexRequest<String> request =
new IndexRequest.Builder<String>()
.index("myIndex")
.id(String.valueOf(UUID.randomUUID()))
.document(consumerRecord.value()) //already serialized json data
.build();
elasticsearchClient.index(request);
据我了解,发生此异常是因为 ES 客户端尝试序列化我提供的数据,该数据已经序列化,导致 JSON 字符串格式错误。
有没有办法解决这个问题,只发送简单的 JSON 字符串?我也相信早期的“低级Java库”可以做到这一点,对吧?是的,我知道有一些方法可以让 Kafka 和 ES 之间进行通信,而无需编写 Consumer。
感谢任何提示。
【问题讨论】:
标签: java elasticsearch elasticsearch-client