Mac环境下 java9.0
1,本机使用的elasticsearch kibana 都是7.0.1
image.pngelasticsearch 配置如下
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
网友评论