美文网首页
springcloud项目集成elasticsearch

springcloud项目集成elasticsearch

作者: 土986885 | 来源:发表于2021-01-08 16:22 被阅读0次

    Mac环境下 java9.0

    1,本机使用的elasticsearch kibana 都是7.0.1

    image.png

    elasticsearch 配置如下

    http.port: 9200
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    network.host: 127.0.0.1
    transport.host: 0.0.0.0
    cluster.name: my-application
    transport.tcp.port: 9300
    discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300"]
    cluster.initial_master_nodes: ["node-1"]
    

    2,添加maven依赖

    注意如果使用spring-boot-starter-data-elasticsearch 需要注意springboot的版本问题,SpringBoot是2.2.0.RELEASE才兼容elasticsearch 7.x

       <!--springDataES依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            </dependency>
    

    问题记录:

    问题1:springboot与spring-boot-starter-data-elasticsearch版本兼容问题
    spring boot整合ElasticSearch启动报错信息如下:

    None of the configured nodes are available
    

    从日志可以看出,是版本号不兼容的原因。我的springboot版本是2.1.4版本,elasticsearch安装的是7.0.1版本。
    所以要么升高springboot版本,要么安装个低版本的elasticsearch。
    我选择了升高springboot的版本,在pom.xml中修改了springboot的版本号,改成了2.2.0版本。

    等待spring框架更新后启动eureka发现报错了

    问题2:springboot启动spring-cloud-netflix-starter-eureka-server问题
    eureka启动报错:SpringBoot整合Eureka时启动报错:No qualifying bean of type javax.servlet.Filter available

    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
    No qualifying bean of type 'javax.servlet.Filter' available: 
    expected at least 1 bean which qualifies as autowire candidate.
     Dependency annotations:{@org.springframework.beans.factory.annotation.Qualifier(value=httpTraceFilter)}
    

    查询后发现是eureka版本与springboot版本不对应 springboot使用的是2.2.0然而由于springcloud版本未更新,原因:该启动异常是由于Spring Boot和Spring Cloud版本不相对应导致。需要特别注意的使用Spring Boot和Spring Cloud进行开发时要求Spring Boot 的版本和 Spring Cloud 的版本相对应,如果版本不对应,会遇到很多报错的情况,他们的匹配关系如下:

    Spring Cloud Hoxton -->    Spring Boot 2.2.x
    Spring Cloud Greenwich -->    Spring Boot 2.1.x
    Spring Cloud Finchley -->    Spring Boot 2.0.x
    Spring Cloud Edgware -->    Spring Boot 1.5.x
    

    到工程更新springcloud

    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
     </dependency>
    

    注意:elasticsearch7以上版本不再支持自定义type了,这里需要使用默认的type,一个索引下只有一个type,都叫做_doc
    再次启动服务 未报错启动了


    image.png

    相关文章

      网友评论

          本文标题:springcloud项目集成elasticsearch

          本文链接:https://www.haomeiwen.com/subject/hkjfaktx.html