网上很多整合教程都是基于SpringBoot1.5的,而SpringBoot1.5只支持2.x版本的ElasticSearch,而我想要使用5.x系的ES,折腾半天终于弄好了,这里记录一下
JDK 1.8
Spring Boot 2.0.0.RELEASE
ElasticSearch 5.6.8
Deepin Linux 15.5
用idea创建新项目,勾选web和NoSQL里Elasticsearch选项,等待创建完成即可
然后在pom.xml补充一个依赖(其实SpringBoot2.0之后貌似已经不需要了)
<dependency>
<groupId>net.java.dev.jnagroupId>
<artifactId>jna-platformartifactId>
dependency>
如果是旧项目的话添加依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-elasticsearchartifactId>
dependency>
<dependency>
<groupId>net.java.dev.jnagroupId>
<artifactId>jna-platformartifactId>
dependency>
这里Maven加载Jar包会用点时间,所以我们先来装ES
注意,ES的版本最好下载和项目一致的版本,我之前就是下错了版本然后一直连不上,坑T_T
当然这只是建议,你也可以使用你想用的版本的ES
这里给出一个查看版本的方法,在IDEA编辑器左下部分能够看到我们导入的所有JAR包
然后我们可以看到所有关于elasticsearch的jar包,可以看到对应es的版本,这里是5.6.8
然后我们从官网下载ES
下载完成后解压elasticsearch-5.6.8.tar.gz
修改 config下的elasticsearch.yml
配置 cluster.name、network.host
其他参数如http.port,log等自己按需配置,这里保持默认
cluster.name:suddev
network.host:0.0.0.0 #0.0.0.0为任意ip都可连接
cd到elasticsearch的bin目录下
./elasticsearch
这里有一点想说的是,在elasticsearch中默认9200是http的端口,9300是给java用户的端口,所以我们这里端口写9300
spring:
data:
elasticsearch:
cluster-nodes: 127.0.0.1:9300 #格式 ip:端口 多个节点逗号隔开
cluster-name: suddev
然后在AppAplication.java中(也就是包含SpringBoot的Main方法的那个类)添加注解
@EnableElasticsearchRepositories
@SpringBootApplication
@EnableElasticsearchRepositories(basePackages = "com.suddev.esdemo.repository") \\这里basePackages对应你dao所在包
public class EsDemoApplication {
public static void main(String[] args) {
SpringApplication.run(EsDemoApplication.class, args);
}
}
启动SpringBoot,控制台输出一下信息:
可以看见SpringBoot成功连接到ES了
网上教程就很多了,大家可以参考网上教程
这里给个官方文档链接,很有参考价值
评论区说遇到org.elasticsearch.client.transport.NoNodeAvailableException这个异常,今天刚好碰到了,折腾一下午终于解决,给出一个解决方案,仅供参考:
SpringBoot整合ElasticSearch报NoNodeAvailableException: None of the configured nodes are available新解决方案