文章目录
Spring Data是spring提供的一套连接各种第三方数据源的框架集,它支持连接很多第三方数据源,例如:
包括数据库在内,很多第三方数据都可以使用SpringData操作,非常方便。
上面章节介绍了Spring Data可以连接很多第三方数据源,其中ES就是Spring Data可以连接的对象。原生情况下,我们需要使用socket来连接ES获得响应,再解析响应,代码量非常大,我们现在可以使用Spring Data提供的封装,连接ES,方便快捷。
转到knows-search模块:
下面我们添加Spring Data ES的依赖:
application.properties:
SpringBoot启动类无需配置!
操作ES需要类:首先定义一个对应ES数据的类型,创建一个vo包,包中定义Item(商品)类代码如下:
这个类中所有属性均配置了对应ES的属性和类型,下面我们就可以使用这个类操作ES了。
创建一个包repository,创建一个接口ItemRepository:
这个接口和Mybatis Plus中Mapper接口继承的baseMapper类似,会自动提供基本的增删改查方法。下面进行测试,测试类代码如下:
上面进行了单增、单查、批量增和全查的操作,下面进行自定义的查询。
Spring Data支持编写方法名表达操作,会自动按方法名的表达生成实现代码,这是它的一大优势!
在ItemRepository接口编写方法:
测试代码:
相当于运行了下面的指令:
多属性条件查询:在ItemRepository接口编写方法:
测试类:
实际执行的请求:
排序查询:在ItemRepository接口编写方法:
测试代码:
实际运行的请求:
添加分页查询功能::在ItemRepository接口编写方法
测试:
根据条件分页查询
再来一种 根据条件分页查询
基于批量操作
最后附上自己写的一个请求工具类(使用这个不需要引入spring-data-es的jar包了,是依靠es自带的http请求操作)
需要注意的是批量操作时,换行符的使用(_bulk操作ES)
还有一点注意的是:当操作es索引时,索引不存在就会返回,不做配置的话会让程序直接抛出异常终止运行,我们希望状态码返回时,走创建索引的逻辑,这时候就需要把相关的状态码加入白名单