Spring Boot & ES 实战,值得每位Java程序员参考!

落花浮王杯 提交于 2019-11-29 09:49:26

1. 前言

1.1. 集成方式

Spring Boot中集成Elasticsearch有4种方式:

  • REST Client
  • Jest
  • Spring Data
  • Spring Data Elasticsearch Repositories

本文用后面两种方式来分别连接并操作Elasticsearch

1.2. 环境与配置

服务端:elasticsearch-6.3.2 1台

客户端:elasticsearch 6.4.1

服务端配置文件:elasticsearch.yml

 

/etc/security/limits.conf

 

/etc/sysctl.conf

 

1.3. 版本

Spring Boot 2.0.5默认的elasticsearch版本很低,这里我们用最新版本6.4.1

如果启动过程中出现

java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/InetSocketTransportAddress

则说明,elasticsearch依赖的jar包版本不一致,统一改成6.4.1即可

另外,Spring Boot 2.0.5依赖的spring-data-elasticsearch版本是3.0.1,需要升级到3.1.0

 


2. 依赖

 

 

3. application.properties

 

也许,大家会疑惑,配置文件中明明写的端口是9200,为何这里配置文件中连接的时候写的端口是9300呢?

因为,配置9200是通过HTTP连接的端口,9300是TCP连接的端口

 


4. 操作

4.1. 使用Spring Data Elasticsearch Repositories操作Elasticsearch

首先,定义一个实体类

 

这里定义了Commodity实例,表示商品。在Elasticsearch 6.X 版本中,不建议使用type,而且在7.X版本中将会彻底废弃type,所以此处我只指定了indexName,没有指定type。

这里,一个Commodity代表一个商品,同时代表一条索引记录。

类比关系型数据库的话,Index相当于表,Document相当于记录,然后,需要自己定义一个接口,并继承ElasticsearchRepository。

 

 

这里的Repository相当于DAO,操作mysql还是elasticsearch都是一样的

接下来,定义service接口

 

实现类

 

在这个Service中演示了增删查改操作,还有分页查询

最后,写一个测试类测试其中的方法

 

 

以上,便是使用Elasticsearch Repositories的方式

4.2. 使用ElasticsearchTemplate方式操作Elasticsearch

 

ElasticsearchTemplate是自动配置的

 


5. 演示

 


6. 工程结构

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!