Je suis impatient d'intégrer Elasticsearch dans une application Web Spring Boot. Voici ma configuration qui crée mon client de transport:
@Configuration
public class ElasticsearchConfig {
private TransportClient client;
@Bean
public TransportClient client() throws UnknownHostException{
Settings settings = Settings.builder()
.put("client.transport.nodes_sampler_interval", "5s")
.put("client.transport.sniff", false)
.put("transport.tcp.compress", true)
.put("cluster.name", "clusterName")
.put("xpack.security.transport.ssl.enabled", true)
.build();
client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
return client;
}
Lorsque je lance le projet, l'erreur suivante s'affiche et je ne sais pas pourquoi:
Java.lang.ClassNotFoundException: org.elasticsearch.plugins.NetworkPlugin
Ai-je oublié d'ajouter une dépendance?
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.1.1</version>
</dependency>
J'espère que vous pourrez m'aider
Je suis tombé sur le même problème. Il semble que la documentation Elasticsearch ne soit pas complète. En plus de la dépendance du client de transport, vous devez également ajouter la dépendance elasticsearch:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.1.1</version>
</dependency>
Vous aurez également besoin de la dépendance log4j, mais cela est clairement indiqué dans le Elasticsearch docs .
Comme indiqué dans ce problème sur les pages Elasticsearch Github, SpringBoot Starter gère certaines dépendances par défaut, qui définissent la version par défaut d’ElasticSearch au-dessous de 5.1.1, de sorte qu’il n’existe pas de classe de ce type.
Vous pouvez définir explicitement la propriété dans votre propre pom pour remplacer sa définition.
<properties>
<elasticsearch.version>5.1.1</elasticsearch.version>
</properties>
J'espère que ça aide.
pour moi, il semble que la recherche élastique a une mauvaise version de dépendance dans le pom
<properties>
<log4j.version>2.6.2</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.1.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.1.1</version>
<exclusions>
<exclusion>
<artifactId>elasticsearch</artifactId>
<groupId>org.elasticsearch</groupId></exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j.version}</version>
</dependency>
essayez de remplacer la version par 5.1.1 Et bien, il semble qu’il faut aussi log4j?!
cordialement, noirabys