web-dev-qa-db-fra.com

Comment configurer Spring Boot avec elasticsearch 5.2.1?

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

7
cek

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:

  • Attendre et espérer 
  • commander la demande de traction
  • commander la branche de développement 5.0.x-prep
4
Robert Schröder

Vous devez utiliser Spring Boot 2. Découvrez mon spring-boot-elasticsearch-5.x exemple.

3
szxnyc

Vous pouvez utiliser elasticsearch Java api pour créer un client de transport au lieu de spring-data-elasticsearch.

2
gavinSong

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. 

1
vishalagr