Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇

Posted 飞哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇相关的知识,希望对你有一定的参考价值。

引言

上一篇主要讲解的是:使用java操作Elasticsearch api完成常用操作,比如:添加文档、查询文档数据、更新文档数据、删除文档数据、批量添加、批量更新、批量删除、查询指定索引中所有数据、匹配查询\\分页查询\\排序,匹配查询\\高亮显示。

本篇主要讲解的是:SpringData简介、一个完整的开发闭环来演示SpringData操作ES(创建spring项目、创建配置文件、创建pojo类、编写测试类、创建dao接口、修改pojo类、创建测试类、Repository增加自定义操作等)

SpringData简介

1、给自己提需求

如果你有一些项目的开发经历,你就会发现所谓的各种各样的项目,剥离业务不看的话,最底层就是对数据库进行:增删改查。

每个java初学者应该都学过jdbc这个技术点,jdbc连接数据库的步骤:1、加载jdbc驱动程序;2、创建数据库的连接;3、创建preparedStatement;4、执行SQL语句;5、遍历结果集;6、处理异常,关闭JDBC对象资源。

随着你编写代码的过程中,你会发现jdbc操作数据库中好多重复的代码,感觉写起来非常没有意思。你看兄弟无意中你就给自己提了需求,能不能把这些重复的代码简化了?于是就有了各种各样的框架衍生了

2、SpringData

SpringData是Spring的一个子项目,用于简化数据库访问,支持NoSQL和关系 型数据库存储。其主要目标是使得对数据的访问变得方便快捷。

可以极大的简化java的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。

3、SpringData提供的接口

一起来看看Spring Data提供的接口,在后面的代码中会演示一些  

(1)、Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。

(2)、CrudRepository :是Repository的子接口,提供CRUD的功能

(3)、PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能

(4)、JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。

(5)、JpaSpecificationExecutor:用来做负责查询的接口

(6)、Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可

创建spring项目

双击IntelliJ IDEA工具

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_pojo

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_02

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_03

 自定义URL,不要使用默认的地址,速度太慢了。一定要修改成aliyun

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_04

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_05

此处选择组件(pom.xml文件中加入对应jar包的依赖)

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_pojo_06

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_07

项目创建完成(maven自动把Elasticsearch相关的包也导入了)

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_08

创建配置文件

默认配置文件是application.resource

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_09

application.resource重新命名成application.yml,然后编辑如下内容

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_pojo_10

创建pojo类

创建一个package命名为pojo

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_11

pojo中创建Goods类文件(代码内容较多,分成多张图片显示,注意行号标识)

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_12

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_13

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_14

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_15

查看现有的索引

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_16

可以看到当前只有1个索引,它叫ik

编写测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_17

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_springdata_18

运行测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_19

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_Elasticsearch_20

查看现有的索引

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_21

可以看到新产生了一个shop1索引

创建dao接口

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_Elasticsearch_22

编辑内容如下

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_pojo_23

编写测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_24

运行测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_Elasticsearch_25

查看shop1索引中数据

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_26

GoodsRepository中增加自定义操作

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_27

编写测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_springdata_28

运行测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_29

运行结果

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_30

GoodsRepository增加自定义查询并输入参数

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_31

编写测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_dao_32

运行测试类

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_springdata_33

运行结果

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇_spring_34

结束语

至此,Elasticsearch掰开揉碎系列的第13篇就结束了,本篇主要讲解的是:SpringData简介、一个完整的开发闭环来演示SpringData操作ES(创建spring项目、创建配置文件、创建pojo类、编写测试类、创建dao接口、修改pojo类、创建测试类、Repository增加自定义操作等)

由于页面显示图片大小有限,代码一多图片显示得就偏小。还有一些兄弟们,java的基础又不好,照着我的图片打代码,可能因为手误都会出错。为了不让任何一个兄弟夭折在学习的路上,有需要本篇文章中java源代码的,就给我留言点赞吧,Elasticsearch系列也写么这多篇了,算是对我的鼓励和支持吧!留下你的邮箱,我把源代码发给你!

从下一篇我给大家带来的是:SpringData操作ES扩展篇,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!

以上是关于Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch掰开揉碎第6篇Kibana详解

Elasticsearch掰开揉碎第2篇linux环境搭建

Elasticsearch掰开揉碎第10篇maven项目

Elasticsearch掰开揉碎第9篇Java基础环境搭建

Elasticsearch掰开揉碎第12篇java操作ES常用API

Llinux课程计划安排