Springboot 快速集成 ES

 1、Springboot 官网给出的版本选择标准

2、选择版本依赖

我的 elasticsearch 服务版本为 7.17.13,所以 springboot 版本我选用 2.7.10

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.10</version><type>pom</type><scope>import</scope>
</dependency>

客户端版本选择 springboot 默认版本 

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

添加配置文件

spring:elasticsearch:uris: http://localhost:9200username: elasticpassword: admin123

对应的配置类:org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchProperties

ps: spring.elasticsearch.rest 的配置方式从 springboot 2.6.0 起已弃用,将在3.0.0中移除,不推荐使用

3、实现简单的增删改查

a、继承 ElasticsearchRepository<T, ID> 接口,使用模版方法或自定义方法
@Repository
public interface SystemConfigRepository extends ElasticsearchRepository<SystemConfig, String> {SystemConfig findByBizAndCodeAndKey(String biz, String appCode, String ruleKey);@Query("{\"bool\": {\"must\": [{\"match\": {\"appCode\": \"?0\"}}," +"{\"match\": {\"ruleKey\": \"?1\"}}]}}")SystemConfig findByCondition(String appCode, String ruleKey);
}
基于命名约定

查询方法根据方法的命名自动生成,方法名中的关键字和字段名称将被解析为查询条件。 常用的命名约定如下:

  • findBygetByqueryBy:表明查询方法的开始。
  • 属性名称:指定要匹配的字段名。
  • AndOr:用于连接多个条件。
  • InNotIn:用于查询字段值在给定集合中或不在给定集合中的记录。
  • IsEquals:用于查询字段是否等于给定值的记录。
  • Like:用于查询字段模糊匹配的记录。
  • GreaterThanLessThan:用于查询字段大于或小于给定值的记录。
  • OrderBy:用于指定排序字段
基于 @Query 注解

        在查询方法上直接指定 Elasticsearch 查询语句,可以使用 Elasticsearch 查询 DSL 编写复杂的查询逻辑,并使用 SpEL 表达式引用方法参数或其他变量。

  • 字符串查询
@Query("{\"match\": {\"field\": \"value\"}}")
List<YourEntity> findByCustomQuery();
  • 参数绑定
@Query("{\"match\": {\"field\": \"?0\"}}")
List<YourEntity> findByValue(String value);
  • 布尔查询
// 使用布尔查询可以组合多个查询条件,例如 must、should、must_not 等
@Query("{\"bool\": {\"must\": [{\"match\": {\"field1\": \"value1\"}}," +"{\"match\": {\"field2\": \"value2\"}}]}}")
List<YourEntity> findByCustomQuery();
  • 范围查询
@Query("{\"range\": {\"age\": {\"gte\": 18, \"lte\": 30}}}")
List<YourEntity> findByAgeRange();
  •  排序查询
@Query("{\"match_all\": {}}")
List<YourEntity> findAllByOrderByFieldAsc();
b、注入 ElasticsearchOperations 操作类
    @Resourceprivate ElasticsearchOperations esOperations;public List<AppInfoBO> getMonitorAppList() {SystemConfig systemConfig = getAppInfo();Criteria criteria = new Criteria(SystemConfig.BIZ).is(systemConfig.getBiz()).and(SystemConfig.CODE).is(systemConfig.getCode()).and(SystemConfig.STATUS).is(systemConfig.getStatus());// 时间倒序CriteriaQuery criteriaQuery = new CriteriaQuery(criteria);criteriaQuery.addSort(Sort.by(Sort.Direction.DESC,SystemConfig.CREATED_TIME));SearchHits<SystemConfig> searchHits = esOperations.search(criteriaQuery, SystemConfig.class);// 转换成 mapreturn searchHits.stream().map(searchHit -> {SystemConfig systemConfigES = searchHit.getContent();return new AppInfoBO(systemConfigES.getKey(), (String) systemConfigES.getValue());}).collect(Collectors.toList());}

至此执行单元测试即可完成 

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

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

相关文章

【Linux】wait()和waitpid()函数

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…

CRG设计之复位

1. 前言 CRG(Clock and Reset Generation&#xff0c;时钟复位生成模块) 模块扮演着关键角色。这个模块负责为整个系统提供稳定可靠的时钟信号&#xff0c;同时在系统上电或出现故障时生成复位信号&#xff0c;确保各个模块按预期运行。简而言之&#xff0c;CRG模块就像是SoC系…

代码随想录算法训练营第六天 - 哈希表part01

哈希表 笔记&#xff1a; 哈希表能解决什么问题呢&#xff0c;一般哈希表都是用来快速判断一个元素是否出现集合里。当我们遇到了要快速判断一个元素是否出现集合里的时候&#xff0c;就要考虑哈希法。 但是哈希法也是牺牲了空间换取了时间&#xff0c;因为我们要使用额外的数…

网工每日一练(1月30日)

试题1 以太网中的帧属于 &#xff08;B&#xff09; 协议数据单元。 A、物理层 B、数据链路层 C、网络层 D、应用层 试题2 在Linux 系统中&#xff0c;采用 &#xff08;B&#xff09; 命令查看进程输出的信息&#xff0c;得到下图所示的结果。系统启动时最先运行的进程是 &…

黑盒测试用例的具体设计方法(7种)

7种常见的黑盒测设用例设计方法&#xff0c;分别是等价类、边界值、错误猜测法、场景设计法、因果图、判定表、正交排列。 &#xff08;一&#xff09;等价类 1.概念 依据需求将输入&#xff08;特殊情况下会考虑输出&#xff09;划分为若干个等价类&#xff0c;从等价类中选…

项目交付后,PM该如何做复盘总结?

2023已经收尾&#xff0c;那些让我们或焦灼、或紧急、或喜悦、或悲伤的项目也都交付完毕了。为了更好的总结工作成果与反思&#xff0c;各家单位开始一边排练年会舞蹈一边要求员工做出项目交付后复盘方案了&#xff0c;那么&#xff0c;怎样的复盘才会让项目工作更加明确&#…

涂鸦小程序事件系统——小程序间通信

背景信息 一些内聚的、特定的功能模块&#xff0c;可能会被拆分成多个小程序&#xff0c;这些小程序之间需要进行通信、协作&#xff0c;完成数据的传递、状态的同步等。 基础库版本 ≥ 2.9.0 打开其他小程序 小程序可以通过 ty.navigateToMiniProgram 接口打开其他小程序&am…

每日OJ题_算法_前缀和④_力扣238. 除自身以外数组的乘积

目录 力扣238. 除自身以外数组的乘积 解析代码 力扣238. 除自身以外数组的乘积 238. 除自身以外数组的乘积 难度 中等 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数…

1. HarmonyOS 应用开发 TS 准备-1

1. HarmonyOS 应用开发 TS 准备-1 一、TypeScript 是什么 TypeScript 是一种由微软开发的自由和开源的编程语言。 它是 JavaScript 的一个超集&#xff0c;而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 TypeScript 提供最新的和不断发展的 JavaScript…

美易官方《盘前:道指期货跌0.04% 风险周降临》

盘前&#xff1a;道指期货跌0.04% 风险周降临 随着市场的波动&#xff0c;道指期货在盘前微幅下跌0.04%&#xff0c;投资者们正在迎接一个重要的风险周。这个风险周可能会对市场产生重大影响&#xff0c;因此投资者们需要密切关注。美股股指期货周一盘前涨跌互现&#xff0c;本…

如何在群晖NAS部署office服务实现多人远程协同办公编辑文档

文章目录 本教程解决的问题是&#xff1a;1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是&#xff1a; 1.Word&#xff0c;PPT&#xff0c;Excel等重要文件存在本地环境&#xff0c;如何在编…

35.【TypeScript 教程】编译选项

TypeScript 编译选项 TypeScript 提供了很多不同功能的编译选项&#xff0c;既可以通过配置 tsconfig.json 文件中的 compilerOptions 属性来实现编译&#xff0c;也可以使用在 tsc 命令后跟随参数这形式&#xff0c;直接编译 .ts 文件。 注意&#xff1a; 当命令行上指定了输…

Web3技术革新:重新定义在线体验

互联网的不断演进塑造了我们的数字生活&#xff0c;而Web3技术的涌现正带来一场前所未有的变革。本文将深入探讨Web3技术的创新&#xff0c;以及它如何重新定义和提升我们的在线体验。 Web3技术的基本概念 Web3是互联网的第三个时代&#xff0c;它将去中心化、区块链、智能合约…

解决import Jetson.GPIO报错“权限错误”

在导入Jetson.GPIO模块时出现权限错误&#xff0c;可能是由于缺少适当的权限或设备权限问题。以下是一些建议&#xff1a; 使用sudo&#xff1a; 尝试使用sudo来运行你的Python脚本或解释器&#xff0c;以获取足够的权限&#xff1a; sudo python your_script.py请注意&#xf…

(一)PySpark3:安装教程及RDD编程(非常详细)

目录 一、pyspark介绍 二、PySpark安装 三、RDD编程 1、创建RDD 2、常用Action操作 ①collect ②take ③takeSample ④first ⑤count ⑥reduce ⑦foreach ⑧countByKey ⑨saveAsTextFile 3、常用Transformation操作 ①map ②filter ③flatMap ④sample ⑤d…

【Linux】—— 信号的产生

本期&#xff0c;我们今天要将的是信号的第二个知识&#xff0c;即信号的产生。 目录 &#xff08;一&#xff09;通过终端按键产生信号 &#xff08;二&#xff09;调用系统函数向进程发信号 &#xff08;三&#xff09;由软件条件产生信号 &#xff08;四&#xff09;硬件…

会计分录的概念和应用

目录 一. 会计分录的概念二. 会计分录的分类三. 会计分录的应用 \quad 一. 会计分录的概念 \quad 会计分录是指对每笔经济业务列示其应借记和应贷记账户及其金额的一种记录。 会计分录的基本要素 ( 1 )账户及其所属明细账户名称(或会计科目及其所属明细科目名称) (2 )记账方向…

Linux系统——正则表达式

有一段时间本机访问量过高&#xff0c;如何查看日志提取出访问量前十的信息 1.使用提取命令&#xff08;cut、awk、sed&#xff09;提取出ip地址的那一列 2.使用sort按数字排序&#xff0c;将相同的地址整合到一起 3.使用uniq -c统计出数量 4.使用sort 数字 数字倒序排序 5.最…

nginx的编译安装

nginx 的编译安装 1. 准备 下载地址&#xff1a;https://nginx.org/en/download.html linux服务器环境 2. 安装 2.1 解压并进入源码目录 tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0.tar.gz 2.2 安装 nginx编译时所需的依赖库 yum -y install gcc pcre pcre-devel zli…

MySQL二月进阶学习计划

CSDN的各位读者&#xff0c;大家好。马上过年了&#xff0c;最近工作不是很忙&#xff0c;所以有很多时间用来学习。 过去的一周我也学习了一部分内容&#xff0c;但是像无头苍蝇一样没有规划。 我计划用整个2月的时间&#xff0c;再好好学习一遍MySQL数据库相关的知识。下面是…