SpringBoot整合ElasticSearch实现基础的CRUD操作

news2024/11/17 22:46:41

本文来说下SpringBoot整合ES实现CRUD操作

文章目录

  • 概述
  • spring-boot-starter-data-elasticsearch
  • 项目搭建
  • ES简单的crud操作
    • 保存数据
    • 修改数据
    • 查看数据
    • 删除数据
  • 本文小结


概述

SpringBoot支持两种技术和es交互。一种的jest,还有一种就是SpringData-ElasticSearch。根据引入的依赖不同而选择不同的技术。反正作为spring全家桶,目前是以springdata为主流使用技术。直接导入spring-boot-starter-data-elasticsearch就可以了

在这里插入图片描述


spring-boot-starter-data-elasticsearch

访问网址:https://spring.io/projects/spring-data-elasticsearch/

在这里插入图片描述


项目搭建

由于es对springboot的版本有要求,最好按照官网要求来

在这里插入图片描述

es版本

在这里插入图片描述

搭建一个springboot程序来测试es的基本使用

在这里插入图片描述

引入es 的依赖

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

注意这里要引入springBoot整合es的场景启动器。可以简单看下这个场景启动器里面都有啥依赖:

在这里插入图片描述


ES简单的crud操作

配置 application.yml

spring:
  elasticsearch:
    rest:
      uris: http://localhost:9200

创建一个测试的对象,article

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "article")
public class Article {

    // 注意id字段是必须的,可以不写注解@Id。
    @Id
    private String id;
    
    private String title;
    private String content;
    private Integer userId;
    private Date createTime;

}

实现ElasticsearchRepository接口来实现增删改查操作

import cn.wideth.po.Article;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

/****
 * 实现ElasticsearchRepository
 * 接口来实现增删改查操作
 */
public interface ArticleRepository extends ElasticsearchRepository<Article, String> {

}

说明

下面可以使用这个 ArticleRepository 来操作 ES 中的 Article 数据。
我们这里没有手动创建这个 Article 对应的索引,由 elasticsearch 默认生成

下面的接口,使用了 Repository 整合 spring boot 对 es 数据进行插入、更新、查询、删除等操作。可以作为一个参考。

保存数据

保存数据

    @GetMapping("/save")
    @ApiOperation("保存数据")
    public Object save() {

        Article article = new Article();
        article.setId("112233");
        article.setTitle("java");
        article.setContent("hello world");
        article.setUserId(22221111);
        article.setCreateTime(new Date());
        return articleRepository.save(article);
    }

查看结果

在这里插入图片描述


修改数据

保存数据和修改数据都是save方法,存在相同的id信息,则为修改,不存在则为新增

    @GetMapping("/update")
    @ApiOperation("修改数据")
    public Object update() {

        Article article = new Article();
        // id存在,则为修改
        article.setId("112233");
        article.setTitle("java-6");
        article.setContent("hello world-6");
        article.setUserId(6666);
        article.setCreateTime(new Date());
        return articleRepository.save(article);
    }

查看结果

在这里插入图片描述


查看数据

根据id来查看数据

    @GetMapping("/findById")
    @ApiOperation("根据id获得数据")
    public Optional<Article> findById(String id) {

        Optional<Article> article = articleRepository.findById(id);
        log.info("==========>>>>"+article.toString());
        return article;
    }

查看结果

在这里插入图片描述


删除数据

删除数据

    @GetMapping("/delete")
    @ApiOperation("删除数据")
    public void delete(String id) {

        // 根据 id 删除
        articleRepository.deleteById(id);
    }

查看结果

在这里插入图片描述


本文小结

本文使用SpringBoot整合ElasticSearch来实现简单的CRUD操作

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

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

相关文章

ARM安装与项目结构

1. 安装环境 参考E:\peixunQianrushi\arm\ziliao\FS4412新版&#xff08;学生资料&#xff09;\环境相关资料 这边建议全部默认路径 安装注意事项&#xff1a; 1、在接下来的安装过程中&#xff0c;对于使用win10、win8的操作系统的用户&#xff0c;所有的安装请均以管理员身份…

oracle 19c rac集群管理 ------ 日志管理

oracle 19C rac 数据库的目录结构及日志路径 在Oracle 19c RAC&#xff08;Real Application Clusters&#xff09;集群中&#xff0c;有多个组件和层级生成的日志文件&#xff0c;记录着集群的活动、事件和错误信息&#xff0c;用于故障诊断、性能优化和集群管理。以下是常见…

java抽象工厂实战与总结

文章目录 一、工厂模式&#xff08;三种&#xff09;1.简单工厂模式1.1 概念&#xff1a;1.2 使用场景&#xff1a;1.3 模型图解&#xff1a;1.4 伪代码&#xff1a; 2.工厂方法模式2.1 概念&#xff1a;2.2 使用场景&#xff1a;2.3 模型图解&#xff1a;2.4 伪代码 3.抽象工厂…

动态库和静态库的理解 Linux

其实库文件里面的内容就是函数的实现方法&#xff0c;向我们包含的头文件其实就是函数的生命&#xff0c;而我们编译链接程序时会自动加载库文件&#xff0c;最终形成可执行程序。其实我们在编译链接时不仅仅会将文件的库文件加载进来&#xff0c;其实头文件也是需要加载进来的…

工作进入第八年,还在成长的一年

这一年没有写太多的技术博客&#xff0c;是因为工作内容发生了较大的改变&#xff0c;岗位也发生了调整。随着ChatGPT的爆火&#xff0c;无论从公司的领导层&#xff0c;还是从现场的用户&#xff0c;人工智能算是被彻底颠覆了&#xff0c;每个人对生成式人工智能的期待太高&am…

架构篇24:排除架构可用性隐患的利器-FMEA方法

文章目录 FMEA 介绍FMEA 方法FMEA 实战小结 前面的专栏分析高可用复杂度的时候提出了一个问题&#xff1a;高可用和高性能哪个更复杂&#xff0c;根据墨菲定律“可能出错的事情最终都会出错”&#xff0c;架构隐患总有一天会导致系统故障。因此&#xff0c;我们在进行架构设计的…

Intel Atom + Artix-7 100T FPGA,CompactRIO单板控制器

模拟和数字I/O&#xff0c;RMC&#xff0c;DisplayPort&#xff0c;1.33 GHz双核CPU&#xff0c;1 GB DRAM&#xff0c;4 GB存储容量&#xff0c;Artix-7 100T FPGA&#xff0c;CompactRIO单板控制器 CompactRIO控制器是搭载了实时处理器和用户可编程FPGA的嵌入式控制器。其产…

低代码(Low-Code)技术简化开发难度,快速搭建应用

目录 一、低代码技术定义 二、低代码技术优势 1.提高企业的工作效率 2.降低企业的开发成本 3.提高应用程序和业务流程的质量 三、稳定性和生产率的最佳实践 三、最后 随着数字化时代的到来&#xff0c;低代码&#xff08;Low-Code&#xff09;技术已经成为了企业数字化转…

如何使用Docker本地部署Jupyter Notebook并结合内网穿透实现远程访问

&#x1f4d1;前言 本文主要是Linux下通过使用Docker本地部署Jupyter Notebook并结合内网穿透实现远程访问的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;…

别不信❗️你离数据专家只差一个CDMP证书

1⃣️为什么选择CDMP证书&#xff1f; &#x1f31f;&#x1f31f;亲爱的朋友们&#xff0c;如果你在寻找一个能让你在数据管理领域大展拳脚的证书&#xff0c;那么CDMP&#xff08;Certified Data Management Professional&#xff09;证书就是你的不二之选&#xff01;&#…

JavaScript进阶:WebAPIs重点知识整理2

目录 1 对节点的相关操作 1.1 查找节点 1.1.1 查找节点的父节点 1.1.2 查找节点的子节点 1.1.3 查找节点的兄弟节点 1.2 新增节点&#xff08;先创建&#xff0c;后追加&#xff09; 1.3 克隆节点 1.4 删除节点 2 M 端&#xff08;移动端&#xff09;事件 3 JS清空表…

hadoop集群规划部署

一、集群规划 三台硬件资源&#xff0c;部署hadoop版本&#xff0c;hadoop-3.3.5 &#xff0c;部署后配置文件。 Hadoop配置文件分两类&#xff1a;默认配置文件和自定义配置文件。 hadoop102hadoop103hadoop104HDFS NameNode DataNode DataNode SecondaryNameNode DataN…

深度强化学习Task3:A2C、A3C算法

本篇博客是本人参加Datawhale组队学习第三次任务的笔记 【教程地址】 文章目录 Actor-Critic 算法提出的动机Q Actor-Critic 算法A2C 与 A3C 算法广义优势估计A3C实现建立Actor和Critic网络定义智能体定义环境训练利用JoyRL实现多进程 练习总结 Actor-Critic 算法提出的动机 蒙…

Matlab|基于改进遗传算法的储能选址定容(可任意设定储能数量)

目录 主要内容 部分代码 结果一览&#xff08;以3个储能为例&#xff09; 下载链接 主要内容 该模型采用改进遗传算法优化配电网系统中储能选址位置和容量&#xff0c;程序以IEEE33节点系统为分析对象&#xff0c;以网损最小为目标&#xff0c;采用matpower实现系…

谷粒商城-微服务架构图

整体架构 分布式划分图

蓝牙运动耳机什么牌子的好?蓝牙运动耳机品牌排行榜前十名

​运动耳机是耳机中使用场景最广泛的一类&#xff0c;特别适合户外运动、健身和骑行等场景。在众多运动耳机中&#xff0c;哪一款更值得入手呢&#xff1f;今天我将向大家推荐几款相当不错的运动耳机&#xff0c;它们不仅音质上乘&#xff0c;还能满足不同运动场景的需求。 1.…

ozon促销活动100+店铺如何多店铺批量加入活动产品?ozon促销产品怎么删除?

很多Ozon卖家为实现店铺引流&#xff0c;会参与许多官方促销活动&#xff0c;如果每个活动都需要单独管理&#xff0c;会消耗不少的时间成本&#xff0c;操作起来也会非常困难。 尤其是随着运营店铺数量的增加&#xff0c;多个店铺多个促销活动来回切换管理&#xff0c;不仅耗…

modbus poll测试工具测试modbus tcp与PLC设备连接使用方法

socket默认端口是502&#xff0c;socket连上之后&#xff0c; 按照modbuspoll工具设置的读写参数 生成的RTU命令格式去组装读PLC的设备数据 modbuspoll工具配置&#xff0c;以v9.9.2中文破解版为例&#xff1a; 首先点连接菜单&#xff08;connection&#xff09;建立连接&…

Database history tablesupgraded

zabbix升级到6之后&#xff0c;配置安装完成会有一个红色输出&#xff0c;但是不影响zabbix使用&#xff0c;出于强迫症&#xff0c;找到了该问题的解决方法。 Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to nume…

C++:优先队列-Priority_queue

目录 1.关于优先队列 2.priority_queue的使用 1.构造方法 2.empty();判空 3.size(); 4.top(); 5.push(val); 6.pop(); 3.优先队列模拟实现 4.用优先队列解决数组中第K个大的元素 1.关于优先队列 在C中&#xff0c;可以使用STL&#xff08;标准模板库&#xff09;中的p…