elastic/elasticsearch-java

GetSource API throws TransportException

dadoonet opened this issue · 1 comments

Java API client version

8.12.1

Java version

21

Elasticsearch Version

8.12.1

Problem description

Reported at https://discuss.elastic.co/t/example-usage-of-getsourcerequest/351923/

This code fails:

String INDEX = "source-request";
try {
    client.indices().delete(dir -> dir.index(INDEX));
} catch (ElasticsearchException ignored) { }
client.index(ir -> ir.index(INDEX).id("1").withJson(new StringReader("{\"foo\":\"bar\"}")));
client.indices().refresh(rr -> rr.index(INDEX));
client.getSource(gsr -> gsr.index(INDEX).id("1"), ObjectNode.class);

It gives:

co.elastic.clients.transport.TransportException: node: https://localhost:53642/, status: 200, [es/get_source] Failed to decode response

	at co.elastic.clients.transport.ElasticsearchTransportBase.decodeTransportResponse(ElasticsearchTransportBase.java:404)
	at co.elastic.clients.transport.ElasticsearchTransportBase.getApiResponse(ElasticsearchTransportBase.java:363)
	at co.elastic.clients.transport.ElasticsearchTransportBase.performRequest(ElasticsearchTransportBase.java:147)
	at co.elastic.clients.elasticsearch.ElasticsearchClient.getSource(ElasticsearchClient.java:1015)
	at co.elastic.clients.elasticsearch.ElasticsearchClient.getSource(ElasticsearchClient.java:1032)
	at fr.pilato.test.elasticsearch.hlclient.EsClientIT.sourceRequest(EsClientIT.java:625)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.UnsupportedOperationException
	at co.elastic.clients.json.JsonpDeserializer$1.deserialize(JsonpDeserializer.java:113)
	at co.elastic.clients.json.NamedDeserializer.deserialize(NamedDeserializer.java:73)
	at co.elastic.clients.elasticsearch.core.GetSourceResponse.lambda$createGetSourceResponseDeserializer$0(GetSourceResponse.java:165)
	at co.elastic.clients.json.JsonpDeserializer$3.deserialize(JsonpDeserializer.java:136)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
	at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
	at co.elastic.clients.transport.endpoints.EndpointWithResponseMapperAttr$1.deserialize(EndpointWithResponseMapperAttr.java:56)
	at co.elastic.clients.transport.ElasticsearchTransportBase.decodeTransportResponse(ElasticsearchTransportBase.java:399)
	... 8 more

Test available at https://github.com/dadoonet/elasticsearch-java-client-demo/blob/7efcb2aaba732d4eed7402a07a7038728e5ec4cd/src/test/java/fr/pilato/test/elasticsearch/hlclient/EsClientIT.java#L616-L628

Thanks for the report! Seems to be a bug, we'll investigate this.