SpringData整合Elasticsearch----文档操作
  TEZNKK3IfmPf 2023年11月14日 15 0

一.概述

Spring Data Elasticsearch是Spring Data项目下的一个子模块.

简化了原生的Elasticsearch的开放。

Spring Data 的使命是给各种数据访问提供统一的编程接口,不管是关系型数据库(如MySQL),还是非关系数据库(如Redis),或者类似Elasticsearch这样的索引数据库。从而简化开发人员的代码,提高开发效率。

包含很多不同数据操作的模块:

SpringData整合Elasticsearch----文档操作

特征:

  • 支持Spring的基于@Configuration的java配置方式,只要在yml文件中配置,项目中就可以使用
  • 提供了用于操作ES的便捷工具类ElasticsearchTemplate。包括实现文档到POJO之间的自动智能映射。类似于通用Mapper.通过对象操作ES.
  • 利用Spring的数据转换服务实现的功能丰富的对象映射
  • 基于注解的元数据映射方式,而且可扩展以支持更多不同的数据格式
  • 根据持久层接口自动生成对应实现方法,无需人工编写基本操作代码(类似mybatis,根据接口自动得到实现)。当然,也支持人工定制查询

( 今天的正主就要开始了 (^_^)~喵~!! )

二.环境搭建

步骤一 : 首先,我们要修改我们Java项目中的pom 文件 ,在pom文件中添加 我们的依赖

<!--elasticsearch -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

步骤二 : 其次,我们则需要修改我们的yml 文件 ,在yml 文件中添加有关我们 elasticsearch 的相关配置

spring:
  data:
    elasticsearch:
      cluster-name: elasticsearch
      cluster-nodes: 127.0.0.1:9300

 温馨小提示 : 修改我们的yml 文件,一定要确保格式是对的哦! 小喵有着深刻体会  (┭┮﹏┭┮)~.

小喵记得自己当时是这样写的 :

SpringData整合Elasticsearch----文档操作

结果,可想而知报了个错....

SpringData整合Elasticsearch----文档操作

小喵一开始以为是没注入这个对象,但是查看的时候发现注入了,经过大神帮忙发现是yml 文件 格式有问题

SpringData整合Elasticsearch----文档操作

因为那些属性名没高亮 ....

 你们以为错误完了吗?不,看这, 迎面又跑来了一个错误(┭┮﹏┭┮)....

步骤三 :运行时,出现异常 :   Caused by: java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]

SpringData整合Elasticsearch----文档操作

小喵网上查了一下这个错误,说是因为 netty冲突的问题 ,

同时,小喵也得到了解决方案 :

就是在项目初始化前设置一下一个属性。

方法有两种 :

两种方式都是用的一段代码 :

 System.setProperty("es.set.netty.runtime.available.processors", "false");     

   方法1 : 在我们的SpringBoot启动类中加入这段设置:

SpringData整合Elasticsearch----文档操作

方法2 : 我们也可以单独为Elasticsearch写一个配置类,在配置类中初始化时设置

SpringData整合Elasticsearch----文档操作

加入之后确实不报错了    (^_^) 终于可以敲代码了~~~

三 . 索引操作

步骤一 : 创建映射类 

        我们需要创建映射类, 用于表示java的数据和elasticsearch的数据对应关系。在spring data elasticsearch中使用注解完成。

注解名称 描述
 @Document

用于配置Java类与索引/类型对应关系

- indexName:对应索引库名称

- type:对应在索引库中的类型

- shards:分片数量,默认5

- replicas:副本数量,默认1                                                         

@Id  唯一标识
@Field

用于配置Java属性和es的字段对应关系

– type:字段类型,枚举:FieldType

– analyzer:分词器名称

– index:是否索引,布尔类型,默认是true

– store:是否存储,布尔类型,默认是false

SpringData整合Elasticsearch----文档操作

步骤二: 创建索引 、添加映射 、删除映射

ElasticsearchTemplate工具类提供对应方法完成以下功能:

  • 创建索引: createIndex( 映射类.class )

  • 添加映射: putMapping( 映射类.class )

  • 删除索引: deleteIndex( 映射类.class )

 1 )创建测试类,在类中直接注入 ElasticsearchTemplate 工具类.

SpringData整合Elasticsearch----文档操作

2 ) 调用对应的API方法进行操作

SpringData整合Elasticsearch----文档操作

这样就完成了我们的创建索引、 添加映射 和 删除映射了.

四 .文档操作

文档操作的话,我们则需要继承一个接口.

Spring Data Elasticsearch提供了一个顶级接口 Repository,用于对“配置类”进行增删改查操作的。顶级类没有完成具体的功能,具体的功能通过子类完成

         PagingAndSortingRepository:(第二代)完成分页和排序功能

         ElasticsearchCrudRepository:(第三代)增删改查功能

         ElasticsearchRepository:(第四代)完成所有功能

编写:只需要编写子接口,继承 ElasticsearchRepository即可,且spring data自动加载该类。

  • 注意:接口在使用时,需要确定2个泛型信息

    • 第一个泛型:映射类,ESBook

    • 第二个泛型:映射类唯一标识的类型,ID的类型 Long

SpringData整合Elasticsearch----文档操作

使用:其他位置,直接注入repository子接口即可

 

添加数据

方法名              描述         
save(T t )   保存一个数据         
saveAll (T t)   保存一组数据

SpringData整合Elasticsearch----文档操作

修改数据

        修改和添加我们使用的是同一个方法

        两者的区分标准 : 

                 如果id的值==有==对应的数据,则进行==更新==操作。
                 如果id的值==没有==对应的数据,则进行==添加==操作。

SpringData整合Elasticsearch----文档操作

删除数据

SpringData整合Elasticsearch----文档操作

 

这就是小喵所学到的SpringData整合Elasticsearch的文档操作!

后期也会更新查询操作哦!

(^_^)~喵~!!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月14日   18   0   0 elasticsearchDocker
  TEZNKK3IfmPf   2023年11月14日   19   0   0 elasticsearch
TEZNKK3IfmPf