Spring数据弹性搜索可以';t使用ElasticSearch 5.5.0进行连接

Spring数据弹性搜索可以';t使用ElasticSearch 5.5.0进行连接,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我是ElasticSearch的新手 非常喜欢API(特别是ElasticsearchTemplate和支持单元测试) 使用ElasticSearch 5.5.0遵循此示例(以下链接包含完整的内联代码,也可作为可下载的zip文件提供): maven依赖项: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-par

我是ElasticSearch的新手

非常喜欢API(特别是ElasticsearchTemplate和支持单元测试)

使用ElasticSearch 5.5.0遵循此示例(以下链接包含完整的内联代码,也可作为可下载的zip文件提供):

maven依赖项:

<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>
# spring boot
compile 'org.springframework.boot:spring-boot:2.0.0.M2'

# elasticsearch
compile 'org.elasticsearch:elasticsearch:5.5.0'
compile 'org.elasticsearch.client:transport:5.5.0'

# spring-data-elasticsearch for spring boot
compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch:2.0.0.M2'
src/main/resources:

elasticsearch.clustername = mkyong-cluster
elasticsearch.host = localhost
elasticsearch.port = 9300
发布以下文件时,请选择:

mvn spring-boot:run

标准:

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)
此外,请在我的ElasticSearch 5.5.0引擎的标准输出中获取以下内容:

[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]    
有没有办法将Spring数据ElasticSearch与ElasticSearch 5.5.0引擎结合使用

如果是,将如何实现连接


我使用的是Elastic Search提供的Elastic Search Java客户端,能够在ElasticSearch 5.5.0上连接并创建索引,但我真的希望能够利用这个库的强大功能。

Spring Boot 1.5.1不支持ElasticSearch 5.x(您提供的文章也提到了这一点)。为了能够使用ElasticSearch 5.x,您需要使用Spring Boot 2的里程碑

尝试使用以下依赖项配置项目:

<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>
# spring boot
compile 'org.springframework.boot:spring-boot:2.0.0.M2'

# elasticsearch
compile 'org.elasticsearch:elasticsearch:5.5.0'
compile 'org.elasticsearch.client:transport:5.5.0'

# spring-data-elasticsearch for spring boot
compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch:2.0.0.M2'
这应该允许您使用Elasticsearch Java API和spring数据Elasticsearch的所有优点

更新:基本Gradle(v4.0.1)配置如下(build.Gradle文件):


非常感谢你!这是个好消息,但我不知道如何用我的Maven pom.xml配置它。。。此外,我似乎无法在文章中找到SpringBoot1.5.1缺少ElasticSearch5.x的地方。支持。在文章的开头有一个注释部分:
SpringBoot 1.5.1.RELEASE和Spring数据Elasticsearch 2.10.RELEASE仅支持Elasticsearch 2.4.0。他们不支持最新版本的ElasticSearch 5.x版本…
我主要使用gradle进行依赖关系管理-我用配置更新了我的答案,因此更容易将其转换为maven pom。我建议生成pom文件的启动程序-它还将为里程碑生成正确的存储库,因为它们不在cental存储库中。
buildscript {
    ext {
        springBootVersion = '2.0.0.M2'
    }
    repositories {
        mavenCentral()
        maven { url 'https://repo.spring.io/libs-snapshot' }
        maven { url 'http://repo.spring.io/milestone/' }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

apply plugin: 'java-library'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

jar {
    baseName = 'elastic'
    version = '0.0.1'
}

repositories {
    mavenCentral()
    jcenter()
    maven { url 'https://repo.spring.io/libs-snapshot' }
    maven { url 'http://repo.spring.io/milestone/' }
}

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile 'org.springframework.boot:spring-boot-starter-logging'

    compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch'

    compile 'org.elasticsearch:elasticsearch:5.4.1'
    compile 'org.elasticsearch.client:transport:5.4.1'

    compile 'com.google.guava:guava:20.0'

    testCompile 'junit:junit:4.12'
}