Description
Problem description
There seems to be a breaking change in the API of the Elasticsearch Java Client in 8.9.0 which was introduced in elastic/elasticsearch-java#584.
Boot's inner class ElasticsearchTransportConfiguration
inside ElasticsearchClientConfigurations
tries to creates an RestClientTransport
by passing TransportOptions
. But due to the change it now expects a RestClientOptions
.
There is already work done in spring-data-elasticsearch
spring-projects/spring-data-elasticsearch@412a2e2. But we do not use spring-data-elasticsearch
in our project.
We use
spring-boot-starter-parent
in 3.1.2
together with
spring-retry
spring-boot-starter-cache
spring-boot-starter-security
spring-boot-starter-oauth2-resource-server
spring-boot-starter-data-redis
spring-boot-starter-aop
together with
co.elastic.clients.elasticsearch-java
- the new one, not the High-Level-Rest-Client
Is it possible to implement a workaround on my side?
Is it possible to see a fix in the 3.1.X train?
***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchClientConfigurations$ElasticsearchTransportConfiguration.restClientTransport(ElasticsearchClientConfigurations.java:91)
The following method did not exist:
'void co.elastic.clients.transport.rest_client.RestClientTransport.<init>(org.elasticsearch.client.RestClient, co.elastic.clients.json.JsonpMapper, co.elastic.clients.transport.TransportOptions)'
The calling method's class, org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchClientConfigurations$ElasticsearchTransportConfiguration, was loaded from the following location:
jar:file:/C:/Users/User/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.1.2/spring-boot-autoconfigure-3.1.2.jar!/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchClientConfigurations$ElasticsearchTransportConfiguration.class
The called method's class, co.elastic.clients.transport.rest_client.RestClientTransport, is available from the following locations:
jar:file:/C:/Users/User/.m2/repository/co/elastic/clients/elasticsearch-java/8.9.0/elasticsearch-java-8.9.0.jar!/co/elastic/clients/transport/rest_client/RestClientTransport.class
The called method's class hierarchy was loaded from the following locations:
co.elastic.clients.transport.rest_client.RestClientTransport: file:/C:/Users/User/.m2/repository/co/elastic/clients/elasticsearch-java/8.9.0/elasticsearch-java-8.9.0.jar
co.elastic.clients.transport.ElasticsearchTransportBase: file:/C:/Users/User/.m2/repository/co/elastic/clients/elasticsearch-java/8.9.0/elasticsearch-java-8.9.0.jar
Action:
Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchClientConfigurations$ElasticsearchTransportConfiguration and co.elastic.clients.transport.rest_client.RestClientTransport
(Similar to elastic/elasticsearch-java#642, not sure which project needs to act)