Sprint引导和弹性搜索连接问题

时间:2017-07-08 14:23:01

标签: java spring maven elasticsearch

我正在使用Spring Boot和Elastic-Search创建应用程序。 Spring应用程序部分正在运行而且当我启动Elastic服务器时,它也运行良好。没问题。我可以通过POSTMAN和CURL来测试它。添加和搜索效果很好。

但是当我运行应用程序时,我遇到了以下问题。 这是我在IDE中遇到的问题。 (这意味着来自我的java应用程序)

  

org.elasticsearch.client.transport.NoNodeAvailableException:没有配置的节点可用:[{#transport#-1} {127.0.0.1} {127.0.0.1:9300}]

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

  

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

这些是我正在使用的库。

  • Spring Boot 1.5.1.RELEASE
  • Spring Boot Starter Data Elasticsearch 1.5.1.RELEASE
  • Spring Data Elasticsearch 2.10.RELEASE
  • 弹性搜索5.0

我认为这是Elastic及以上库版本不匹配的问题。 我是Elastic和Spring的新手。版本问题在这里。 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中,我也无法找到所有依赖项。

1 个答案:

答案 0 :(得分:1)

根据您提供的版本矩阵,您使用的Spring引导版本与ElasticSearch 5.x实例不兼容。所以,我认为你有3个选择:

  • 如果你真的需要使用ElasticSearch 5.0来使用SpringBoot 1.5.1,你应该添加与ElasticSearch 5.0相关的maven依赖项并实现你自己的DAO服务。
  • 您可以尝试将ElasticSearch版本降级到2.4,以使其与您当前的春季启动版本兼容。
  • 也许您可以尝试使用最近的spring boot版本(1.5.4),因为根据spring-data-elasticsearch项目(https://github.com/spring-projects/spring-data-elasticsearch/),最后一个版本支持ElasticSearch 5.x,所以可能它可以是最简单的方法。

如果上述任何选项对您有用,请与我们联系。