SpringBoot2.0整合ElasticSearch5.x

1.前言

网上很多整合教程都是基于SpringBoot1.5的,而SpringBoot1.5只支持2.x版本的ElasticSearch,而我想要使用5.x系的ES,折腾半天终于弄好了,这里记录一下

2.项目环境:

JDK 1.8
Spring Boot 2.0.0.RELEASE
ElasticSearch 5.6.8
Deepin Linux 15.5

3.搭建SpringBoot骨架

用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

4.ElasticSearch安装

注意,ES的版本最好下载和项目一致的版本,我之前就是下错了版本然后一直连不上,坑T_T
当然这只是建议,你也可以使用你想用的版本的ES
这里给出一个查看版本的方法,在IDEA编辑器左下部分能够看到我们导入的所有JAR包
SpringBoot2.0整合ElasticSearch5.x_第1张图片
然后我们可以看到所有关于elasticsearch的jar包,可以看到对应es的版本,这里是5.6.8
SpringBoot2.0整合ElasticSearch5.x_第2张图片
然后我们从官网下载ES

下载地址

下载完成后解压elasticsearch-5.6.8.tar.gz

修改ES配置

修改 config下的elasticsearch.yml
配置 cluster.name、network.host
其他参数如http.port,log等自己按需配置,这里保持默认

cluster.name:suddev
network.host:0.0.0.0 #0.0.0.0为任意ip都可连接

启动ES

cd到elasticsearch的bin目录下

./elasticsearch

5. 配置SpringBoot

编辑application.yml或application.properties

这里有一点想说的是,在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);
    }
}

6.测试

启动SpringBoot,控制台输出一下信息:
可以看见SpringBoot成功连接到ES了
控制台输入

编写DAO,Service,Conntroller

网上教程就很多了,大家可以参考网上教程
这里给个官方文档链接,很有参考价值

官方文档(英文)链接

附Demo源代码 密码: 7qyq

整合这里差不多就结束了,有问题欢迎留言!

7.补充

评论区说遇到org.elasticsearch.client.transport.NoNodeAvailableException这个异常,今天刚好碰到了,折腾一下午终于解决,给出一个解决方案,仅供参考:
SpringBoot整合ElasticSearch报NoNodeAvailableException: None of the configured nodes are available新解决方案

你可能感兴趣的:(java,elasticsearch,spring-data)