springdata框架对es集成

news2024/9/22 5:33:50

什么是spring data框架

Spring Data是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce框架和云计算数据服务。Spring Data可以极大的简化JPA(Elasticsearch…)的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD 外,还包括如分页、排序等一些常用的功能。

Spring Data Elasticsearch 介绍


Spring Data Elasticsearch基于Spring Data API简化 Elasticsearch 操作,将原始操作Elasticsearch 的客户端API进行封装。Spring Data为Elasticsearch 项目提供集成搜索引擎。Spring Data Elasticsearch POJO的关键功能区域为中心的模型与Elastichsearch交互文档和轻松地编写一个存储索引库数据访问层

java如何使用呢

第一步加pom依赖

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

第二步在配置文件中application.properties

第三步创建es配置类

需要继承一个AbstractElasticsearchConfiguration他是一个抽象类,并重写里面的elasticsearchClient方法,这个是方法是用来连接es的客户端的

其中

@Configuration 声明是一个配置类
@ConfigurationProperties(prefix = "elasticsearch") 在配置文件中找到以elasticsearch开头的
@Data 提供get set 方法

第四步 创建一个实体

@Document(indexName = "product",shards = 3,replicas = 1) 

@Document是Spring Data Elasticsearch提供的一个注解,用于指定Java对象与Elasticsearch索引的映射关系。

indexName:索引名

shards:主分片 默认是1

replicas: 副分片 默认是1

@ID  必须全局唯一,在es中位置表示

@Field 属性(type:字段类型  analyzer:分词器  index:索引(默认true)  keyword:是否分词)

第五部 创建Dao

是一个接口和service相似 继承ElasticsearchRepository指定类型<实体类型,主键类型>

ElasticsearchRepository是Spring Data Elasticsearch提供的一个接口,它为我们提供了一组用于操作Elasticsearch的常见CRUD(创建、读取、更新、删除)方法。

接下来java调用ES的Api

ElasticsearchRestTemplate是Spring Data Elasticsearch提供的一个类,它是基于Elasticsearch的REST API构建的一个高级模板类。它提供了一系列方法来操作Elasticsearch索引,比如索引的创建、文档的索引、更新和删除等。

java如何创建索引

kibanba查看

可以看到索引创建成功了,但是为什么会自动创建了

因为我们在实体上面加了

@Document(indexName = "product",shards = 3,replicas = 1) 所以他会自动创建并分片

并且字段也进行类型也进行匹配 

java如何删除索引

kibanba

java如何判定索引是否存在

java如何往es中添加数据

kibanba查询数据

java如果修改es的数据

kibanba

java如何根据id查询数据

kibanba

java如何查询这个索引下的全部数据

kibanba

java如何删除索引数据

kibanba

java如何批量新增数据

kibanba

java如何进行分页并进行排序

java如何进行复杂的查询

一些简单的查询可以直接用ElasticsearchRepository中提供的方法

如果想要实现分页、排序、多条件查询就需要使用ElasticsearchOperations

二者区别

ElasticsearchOperationsElasticsearchRepository是Spring Data Elasticsearch提供的两个不同的接口,它们之间有一些区别。

  1. ElasticsearchOperationsElasticsearchOperations是Spring Data Elasticsearch提供的核心接口之一,它定义了一组用于与Elasticsearch进行交互的方法。通过ElasticsearchOperations,您可以执行各种操作,如索引文档、更新文档、删除文档、执行查询等。这个接口提供了更灵活和底层的操作方式,适用于需要更精细控制的场景。

  2. ElasticsearchRepositoryElasticsearchRepository是Spring Data Elasticsearch提供的另一个接口,它是基于CrudRepository的子接口。ElasticsearchRepository为您提供了一组CRUD操作的方法,包括保存文档、更新文档、删除文档和查询文档等。您可以使用这些方法来操作Elasticsearch中的数据,而无需编写太多的自定义代码。这个接口提供了更高级和简化的操作方式,适用于常见的CRUD场景。

结果为什么会把小米1 小米2 小米3都查询出来呢

  1. matchQuerymatchQuery是一种全文搜索查询,它将查询字符串分词并匹配文档中包含任何一个词项的文档。它会将查询字符串进行分析,生成词项,并在查询过程中考虑词项的权重和相似度。matchQuery可以模糊匹配,对于不完全匹配的情况,它会根据相关性进行评分排序。如果查询字段中存在多个词项,它会尝试匹配其中的任意一个。
  2. termQuerytermQuery是一种精确匹配查询,它会将查询字符串作为一个整体进行匹配,不会对查询字符串进行分词。只有当查询字段中的内容和查询字符串完全匹配时,才会返回匹配的文档。termQuery不考虑相关性和评分,只会精确匹配。
  3. 我改成termQuey查询,还是查询不来呢

  4. 问题可能是由于您的字段类型造成的。在Elasticsearch中,termQuery是用于精确匹配的查询,而matchQuery则是用于全文搜索的查询。对于文本类型的字段,Elasticsearch会对其进行分词处理,以便能够进行更灵活的匹配。

    如果您的"title"字段在映射时被定义为文本类型(例如"type": "text"),那么使用termQuery可能无法精确匹配到结果,因为termQuery会将查询的关键词视为一个完整的词汇进行匹配。而matchQuery会对查询的关键词进行分词处理,并匹配包含任意分词的文档。

  5. 如果我进行字段类型,还是无法匹配

  6. 因为字段类型一旦定义了是无法通过重启程序进行变更  要不删除索引,重新加载
    结果出来了,但是一般不建议是删除索引,因为一旦删除索引,数据也会不存在的

  7. ElasticsearchOperations和ElasticsearchRestTemplate和ElasticsearchRepository
    三者区别

  8. ElasticsearchOperations: ElasticsearchOperations是一个通用的接口,提供了与Elasticsearch进行交互的基本操作,例如索引、更新、删除和搜索文档等。它是Spring Data Elasticsearch提供的最底层的接口,提供了直接与Elasticsearch进行交互的能力。

  9. ElasticsearchRestTemplate: ElasticsearchRestTemplate是ElasticsearchOperations接口的一个实现,它使用Elasticsearch的REST API来与Elasticsearch进行交互。它提供了一组方法,用于执行索引、更新、删除、搜索等操作,并支持更高级的功能,如聚合、高亮等。它是基于Spring的RestTemplate构建的,可以通过注入的方式在应用程序中使用。

  10. 总结来说,ElasticsearchOperations是最底层的操作接口,提供了与Elasticsearch进行交互的基本能力;ElasticsearchRestTemplate是ElasticsearchOperations的一个实现,使用Elasticsearch的REST API进行交互;ElasticsearchRepository是一个高级接口,用于进行常见的CRUD操作,并提供了默认的实现,使得与Elasticsearch的集成更加便捷。您可以根据具体的需求选择使用哪个接口。

  11. ElasticsearchRepository: ElasticsearchRepository是一个高级接口,它扩展了Spring Data提供的CrudRepository接口,用于对Elasticsearch进行常见的CRUD操作。它提供了一组默认的方法,例如保存、删除、搜索等,可以通过继承该接口来自定义和扩展特定实体类的操作。Spring Data Elasticsearch会自动为实现了ElasticsearchRepository接口的类生成相应的实现,简化了与Elasticsearch的集成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1552847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【TB作品】MSP430G2553,超声波倒车雷达PCB,单片机,超声波SR04,键盘,oled,

题目 硬件&#xff1a;MSP430G2553、 SR04超声波传感器 、3*4键盘、 无源蜂鸣器、oled显示屏 软件 1 、实时显示测量得到的距离 2、按键设置一个报警门限数值&#xff0c;直接输入数值后确认 3、低于报警门限数值就开始报警&#xff0c;而且距离越近蜂鸣器的鸣叫频率越高 程序…

电脑突然死机怎么办?

死机是电脑常见的故障问题&#xff0c;尤其是对于老式电脑来说&#xff0c;一言不合电脑画面就静止了&#xff0c;最后只能强制关机重启。那么你一定想知道是什么原因造成的吧&#xff0c;一般散热不良最容易让电脑死机&#xff0c;还有系统故障&#xff0c;比如不小心误删了系…

MySQL count(*/column)查询优化

count()是SQL中一个常用的聚合函数&#xff0c;其被用来统计记录的总数&#xff0c;下面通过几个示例来说明此类查询的注意事项及应用技巧。 文章目录 一、count()的含义二、count()的应用技巧2.1 同时统计多列2.2 利用执行计划 一、count()的含义 count()用于统计符合条件的记…

Yarn简介及Windows安装与使用指南

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

STM32使用USART发送数据包指令点亮板载LED灯

电路连接&#xff1a; 连接显示屏模块&#xff0c;显示屏的SCL在B10&#xff0c;SDA在B11。 程序目的&#xff1a; 发送LED_ON指令打开板载LED灯&#xff0c;发送LED_OFF关闭板载LED灯&#xff0c;与上一个博客不同&#xff0c;这个实际上是实现串口收发文本数据包。 …

flink on yarn-per job源码解析、flink on k8s介绍

Flink 架构概览–JobManager JobManager的功能主要有: 将 JobGraph 转换成 Execution Graph,最终将 Execution Graph 拿来运行Scheduler 组件负责 Task 的调度Checkpoint Coordinator 组件负责协调整个任务的 Checkpoint,包括 Checkpoint 的开始和完成通过 Actor System 与 …

【MySQL】6.MySQL主从复制和读写分离

主从复制 主从复制与读写分离 通常数据库的读/写都在同一个数据库服务器中进行&#xff1b; 但这样在安全性、高可用性和高并发等各个方面无法满足生产环境的实际需求&#xff1b; 因此&#xff0c;通过主从复制的方式同步数据&#xff0c;再通过读写分离提升数据库的并发负载…

Day54:WEB攻防-XSS跨站Cookie盗取表单劫持网络钓鱼溯源分析项目平台框架

目录 XSS跨站-攻击利用-凭据盗取 XSS跨站-攻击利用-数据提交 XSS跨站-攻击利用-flash钓鱼 XSS跨站-攻击利用-溯源综合 知识点&#xff1a; 1、XSS跨站-攻击利用-凭据盗取 2、XSS跨站-攻击利用-数据提交 3、XSS跨站-攻击利用-网络钓鱼 4、XSS跨站-攻击利用-溯源综合 漏洞原理…

深度学习理解及学习推荐(持续更新)

主推YouTuBe和Bilibili 深度学习博主推荐&#xff1a; Umar Jamil - YouTubehttps://www.youtube.com/umarjamilai StatQuest with Josh Starmer - YouTubehttps://www.youtube.com/statquest RNN Illustrated Guide to Recurrent Neural Networks: Understanding the Int…

知乎:多云架构下大模型训练,如何保障存储稳定性?

知乎&#xff0c;中文互联网领域领先的问答社区和原创内容平台&#xff0c;2011 年 1 月正式上线&#xff0c;月活跃用户超过 1 亿。平台的搜索和推荐服务得益于先进的 AI 算法&#xff0c;数百名算法工程师基于数据平台和机器学习平台进行海量数据处理和算法训练任务。 为了提…

生成式 AI 学习资源大汇总

这里汇聚了该领域的海量学习资源&#xff0c;从研究更新到面试技巧&#xff0c;从课程材料到免费课程&#xff0c;还有实用代码&#xff0c;一应俱全&#xff0c;是你工作流程中的得力助手&#xff01; 前沿研究&#xff1a;每月精心筛选的最佳生成式 AI 论文列表&#xff0c;让…

Flink集群主节点JobManager启动分析

1.概述 JobManager 是 Flink 集群的主节点&#xff0c;它包含三大重要的组件&#xff1a; ResourceManager Flink集群的资源管理器&#xff0c;负责slot的管理和申请工作。 Dispatcher 负责接收客户端提交的 JobGraph&#xff0c;随后启动一个Jobmanager&#xff0c;类似 Yarn…

C#全新一代医院手术麻醉系统围术期全流程源码

目录 一、麻醉学科的起源 二、麻醉前访视与评估记录单 患者基本信息 临床诊断 患者重要器官功能及疾病情况 病人体格情况分级 手术麻醉风险评估 拟施麻醉方法及辅助措施 其他需要说明的情况 访视麻醉医师签名 访视时间 与麻醉相关的检查结果 三、手术麻醉信息系统…

蓝桥杯单片机快速开发笔记——PCF8591的DAC模拟电压输出

一、原理分析 PCF8591电压信号探测器&#xff1a;http://t.csdnimg.cn/R38tC IIC原理&#xff1a;http://t.csdnimg.cn/v4dSv IIC指令&#xff1a;http://t.csdnimg.cn/RY6yi HC573/HC138&#xff1a;http://t.csdnimg.cn/W0a0U 数码管&#xff1a;http://t.csdnimg.cn/kfm9Y 独…

jmeter总结之:Regular Expression Extractor元件

Regular Expression Extractor是一个后处理器元件&#xff0c;使用正则从服务器的响应中提取数据&#xff0c;并将这些数据保存到JMeter变量中&#xff0c;以便在后续的请求或断言中使用。在处理动态数据或验证响应中的特定信息时很有用。 添加Regular Expression Extractor元…

实时数仓之实时数仓架构(Hudi)

目前比较流行的实时数仓架构有两类&#xff0c;其中一类是以FlinkDoris为核心的实时数仓架构方案&#xff1b;另一类是以湖仓一体架构为核心的实时数仓架构方案。本文针对FlinkHudi湖仓一体架构进行介绍&#xff0c;这套架构的特点是可以基于一套数据完全实现Lambda架构。实时数…

20232831 2023-2024-2 《网络攻防实践》第4次作业

目录 20232831 2023-2024-2 《网络攻防实践》第4次作业1.实验内容2.实验过程&#xff08;1&#xff09;ARP缓存欺骗攻击&#xff08;2&#xff09;ICMP重定向攻击&#xff08;3&#xff09;SYN Flood攻击&#xff08;4&#xff09;TCP RST攻击&#xff08;5&#xff09;TCP会话…

ocr之opencv配合paddleocr提高识别率

背景1&#xff1a;在这篇文章编写之前使用到的工具并不是opencv&#xff0c;而是java原有的工具BufferedImage。但因为在使用过程中会频繁切图&#xff0c;放大&#xff0c;模糊&#xff0c;所以导致的jvm内存使用量巨大&#xff0c;分秒中都在以百兆的速度累加内存空间。这种情…

docker可视化界面 - portainer安装

目录 一、官方安装说明 二、安装portainer 2.1拉取镜像 2.2运行portainer容器 2.3登录和使用portainer 一、官方安装说明&#xff1a; Install PortainerChoose to install Portainer Business Edition or Portainer Community Edition.https://www.portainer.io/install…

本地部署大模型的几种工具(上-相关使用)

目录 前言 为什么本地部署 目前的工具 vllm 介绍 下载模型 安装vllm 运行 存在问题 chatglm.cpp 介绍 下载 安装 运行 命令行运行 webdemo运行 GPU推理 ollama 介绍 下载 运行 运行不同参数量的模型 存在问题 lmstudio 介绍 下载 使用 下载模型文件…