2017-07-08 36 views
1

我正在使用Spring Boot和Elastic-Search创建应用程序。 Spring应用程序部分正在工作。当我启动Elastic服务器时,它也运行良好。没有问题。我可以通过POSTMAN和CURL来测试它。添加和搜索也很好。冲刺启动和弹性搜索连接问题

但是当我运行该应用程序时,出现以下问题。 这是我在IDE中遇到的问题。 (这从我的Java应用程序单元)

org.elasticsearch.client.transport.NoNodeAvailableException:所配置的节点都不是可用的:[{#运输#-1} {127.0.0.1} {127.0.0.1: 9300}]

而这是我从本地系统上的Elasctic服务器上得到的问题。

java.lang.IllegalStateException:从不受支持的版本收到的消息:[2.0.0]最小兼容版本是:[5.0.0]

这些是我使用的库。

  • 春季启动1.5.1.RELEASE
  • 春季启动启动数据Elasticsearch 1.5.1.RELEASE
  • 春数据Elasticsearch 2.10.RELEASE
  • 弹性搜索5.0

我觉得这是Elastic和以上库版本不匹配的问题。 我是新的弹性,也春季。版本问题在这里。 https://github.com/spring-projects/spring-data-elasticsearch/wiki/Spring-Data-Elasticsearch---Spring-Boot---version-matrix

和这里是我的pom.xml。如果我需要更新任何图书馆,谁能告诉我这是什么?还请告诉我如何更新这些库?我可以更新它们而不更改为我的源代码吗?

<?xml version="1.0" encoding="UTF-8"?> 

http://maven.apache.org/xsd/maven-4.0.0.xsd“> 4.0.0

<artifactId>springboot-springdata-elasticsearch-example</artifactId> 
<packaging>jar</packaging> 
<url>https://www.mkyong.com</url> 
<version>1.0</version> 

<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> 

    <!-- Runtime, for Embedded Elasticsearch, 
     comment this if connect to external elastic search server--> 
    <dependency> 
     <groupId>net.java.dev.jna</groupId> 
     <artifactId>jna</artifactId> 
     <scope>runtime</scope> 
    </dependency> 

</dependencies> 

<build> 
    <plugins> 
     <!-- Package as an executable jar/war --> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

在该pom.xml中,我

+0

根据您链接到的版本矩阵,不能将elasticsearch 5.x与您要使用的Spring库一起使用。你在外部运行elasticsearch吗?它看起来像。你需要运行一个2.x的elasticsearch。 – Phil

+0

@Phil嘿弹性2.x和5.x之间有什么变化? –

+0

@Phil我可以更新弹簧库以使用Elastic 5.x吗?请帮助我 –

回答

0

根据您提供的版本矩阵,您使用的弹簧启动版本与ElasticSearch 5.x实例不兼容,所以我认为您有3个选项:

  • 如果您确实需要使用ElasticSearch 5.0来处理SpringBoot 1.5.1,则应该添加与ElasticSearch 5.0相关的Maven依赖关系并实现您自己的DAO服务。
  • 你可以尝试以使其与您当前弹簧引导版本兼容降级ElasticSearch版本2.4。
  • 也许您可以尝试使用最近的spring引导版本(1.5.4),因为根据spring-data-elasticsearch项目(https://github.com/spring-projects/spring-data-elasticsearch/),最新版本支持ElasticSearch 5.x,因此它可能是最简单的方法。

请让我知道,如果上述任何选项是有用的你。

+0

最后一点真是太棒了。其实这就是我也想要的。所以,你能帮我解决这个问题吗? –

+0

我可以更新pom.xml吗?不改变我的代码? –

+0

您只需要将proyect父版本(在您的pom中)更改为1.5.4.RELEASE(而不是1.5.1.RELEASE):重新编译您的项目并验证它是否有效。 –