J'essaie de connecter mon application Spring Boot à une instance locale elasticsearch 5.2.1. Lorsque j'utilise " org.springframework.boot: printemps-boot-starter-data-elasticsearch " dépendance, je fais face à " Message reçu de la version non prise en charge: la version minimale compatible est [2.0.0] : [5.0.0] ". Je pense que cela est dû à la version de elasticsearch est 2.4.4 en dépendance de démarrage. Donc, pour résoudre cette erreur, modifiez les propriétés de pom.xml en ajoutant elasticsearch.version> 5.2.1/elasticsearch.version> line. Mais cette fois, je reçois " Java.lang.NoSuchMethodError: org.elasticsearch.client.transport.TransportClient.builder () "
Pour surmonter ce problème, je crée une classe de configuration personnalisée comme ci-dessous:
@Configuration
public class ElasticsearchConfiguration {
@Bean
public Client client() throws UnknownHostException {
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
return client;
}
@Bean
public ElasticsearchTemplate elasticsearchTemplate() throws UnknownHostException {
return new ElasticsearchTemplate(client());
}
}
Cette fois, je reçois des exceptions Apache.logging.log4j ( à vérifier ici ), donc j’ajoute les dépendances nécessaires.
Enfin, j'obtiens une erreur et je reste coincé là Quelqu'un pourrait-il m'aider avec ça?
l'exception imbriquée est Java.lang.NoClassDefFoundError: org/elasticsearch/action/count/CountRequestBuilder
La page github de spring-data-elasticsearch montre qu’il ne prend actuellement en charge elasticsearch que jusqu’à la version 2.4.0.
Pour l'instant vous avez 3 options:
Vous devez utiliser Spring Boot 2. Découvrez mon spring-boot-elasticsearch-5.x exemple.
Vous pouvez utiliser elasticsearch Java api pour créer un client de transport au lieu de spring-data-elasticsearch.
J'ai essayé la même chose et obtenir cette erreur aussi pour CountRequestBuilder
. La raison en est que la classe CountRequestBuilder
est obsolète et supprimée des versions 5.x de recherche élastique, cette classe est remplacée par SearchRequestBuilder
mais malheureusement, spring-data-elasticsearch
ne le fournit pas sa jar et que CountRequestBuilder
est utilisé dans ElasticSearchTemplate.
Je cherche aussi une solution. Je posterai si capable de résoudre.