Am neu Elasticsearch ...Spring Data Elasticsearch kann keine Verbindung mit Elasticsearch 5.5.0
Wirklich lieben die API (insbesondere ElasticsearchTemplate & unterstützt Unit-Tests) ...
wurde im Anschluss an dieses Beispiel unter Verwendung von Elasticsearch 5.5.0 (der folgende Link hat die vollen Inline-Code und auch als herunterladbare ZIP-Datei):
https://www.mkyong.com/spring-boot/spring-boot-spring-data-elasticsearch-example/
maven Abhängigkeiten:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
EsConfig:
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.mkyong.book.repository")
public class EsConfig {
@Value("${elasticsearch.host}")
private String EsHost;
@Value("${elasticsearch.port}")
private int EsPort;
@Value("${elasticsearch.clustername}")
private String EsClusterName;
@Bean
public Client client() throws Exception {
Settings esSettings = Settings.settingsBuilder()
.put("cluster.name", EsClusterName)
.build();
//https://www.elastic.co/guide/en/elasticsearch/guide/current/_transport_client_versus_node_client.html
return TransportClient.builder()
.settings(esSettings)
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName(EsHost), EsPort));
}
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchTemplate(client());
}
}
src/main/resources:
elasticsearch.clustername = mkyong-cluster
elasticsearch.host = localhost
elasticsearch.port = 9300
Wenn die folgende Ausgabe, entweder:
mvn spring-boot:run
oder
mvn clean test
stdout:
Caused by: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{127.0.0.1}{127.0.0.1:9300}]]
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:326)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:223)
at org.elasticsearch.client.transport.support.TransportProxyClient.execute(TransportProxyClient.java:55)
Auch stdout folgendes erhalten sie in meinem Elasticsearch 5.5.0 Motor:
[2017-07-23T02:48:46,135][WARN ][o.e.t.n.Netty4Transport ] [vY7jxpr] exception caught on transport layer [[id: 0xa7e950be, L:/127.0.0.1:9300 - R:/127.0.0.1:60190]], closing connection
java.lang.IllegalStateException: Received message from unsupported version: [1.0.0] minimal compatible version is: [5.0.0]
at org.elasticsearch.transport.TcpTransport.messageReceived(TcpTransport.java:1379) ~[elasticsearch-5.5.0.jar:5.5.0]
at org.elasticsearch.transport.netty4.Netty4MessageChannelHandler.channelRead(Netty4MessageChannelHandler.java:74) ~[transport-netty4-5.5.0.jar:5.5.0]
Gibt es eine Möglichkeit Spring Data Elasticsearch mit Elasticsearch 5.5.0 Motor zu benutzen?
Wenn ja, wie würde die Verbindung implementiert werden?
Ich benutze den Elastic Search Java Client von Elastic Search und bin in der Lage, Indizes auf ElasticSearch 5.5.0 zu verbinden und zu erstellen, aber ich wünschte wirklich, ich könnte die Macht dieser Bibliothek nutzen.
Thank you very much! Das ist eine gute Nachricht, aber ich weiß nicht, wie ich das mit meinem Maven pom.xml konfigurieren soll ... Außerdem kann ich nicht finden, wo Spring Spring 1.5.1 in ElasticSearch 5.x fehlt . Unterstützung. –
Am Anfang des Artikels gibt es einen ** Note ** Abschnitt: 'SpringBoot 1.5.1.RELEASE und Spring Data Elasticsearch 2.10.RELEASE unterstützt nur ElasticSearch 2.4.0.Sie unterstützen nicht die neueste Version von ElasticSearch 5.x Version ... 'Ich verwende hauptsächlich Gradle für das Abhängigkeitsmanagement - Ich habe meine Antwort mit der Konfiguration aktualisiert, so dass es einfacher ist, sie in maven pom zu übersetzen. Ich empfehle https://start.spring.io/ für die Generierung von Starter der Pom-Datei - es generiert auch die richtigen Repositories für Meilensteine, da sie nicht in Cental Repository vorhanden sind. – Joanna