Spring Data访问Elasticsearch----响应式Reactive存储库
Spring Data访问Elasticsearch----响应式Reactive存储库
- 一、用法
- 二、配置
Reactive Elasticsearch存储库支持建立在存储库中解释的核心存储库支持之上,利用由 Reactive REST客户端执行的 Reactive Elasticsearch Operations提供的操作。
Spring Data Elasticsearch响应式存储库支持使用Project Reactor作为其选择的响应式组合库。
有三个主要接口可供使用:
- ReactiveRepository
- ReactiveCrudRepository
- ReactiveSortingRepository
一、用法
要使用Repository访问存储在Elasticsearch中的域对象,只需为它创建一个接口。在你真正开始之前,你需要一个实体。
例1:Person实体示例
public class Person {@Idprivate String id;private String firstname;private String lastname;private Address address;// … getters and setters omitted
}
请注意,id属性需要为String类型。
例2:用于持久化Person实体的基本存储库接口
interface ReactivePersonRepository extends ReactiveSortingRepository<Person, String> {Flux<Person> findByFirstname(String firstname); --------1 Flux<Person> findByFirstname(Publisher<String> firstname); --------2 Flux<Person> findByFirstnameOrderByLastname(String firstname); --------3 Flux<Person> findByFirstname(String firstname, Sort sort); --------4 Flux<Person> findByFirstname(String firstname, Pageable page); --------5 Mono<Person> findByFirstnameAndLastname(String firstname, String lastname); --------6 Mono<Person> findFirstByLastname(String lastname); --------7 @Query("{ \"bool\" : { \"must\" : { \"term\" : { \"lastname\" : \"?0\" } } } }")Flux<Person> findByLastname(String lastname); --------8 Mono<Long> countByFirstname(String firstname) --------9 Mono<Boolean> existsByFirstname(String firstname) --------10 Mono<Long> deleteByFirstname(String firstname) --------11
}1. 该方法显示具有给定firstname的所有人的查询。
2. Finder方法正在等待Publisher的输入以绑定firstname的参数值。
3. Finder方法按lastname排序匹配的文档。
4. Finder方法通过Sort参数定义的表达式对匹配的文档进行排序。
5. 使用Pageable将偏移量和排序参数传递到数据库。
6. Finder方法使用And/Or关键字连接条件。
7. 查找第一个匹配的实体。
8. 该方法显示了通过使用给定参数运行@Query注解来查找的具有给定lastname的所有人的查询。
9. 统计所有firstname匹配的实体。
10. 检查是否至少存在一个firstname匹配的实体。
11. 删除所有firstname匹配的实体。
二、配置
对于Java配置,使用@EnableReactiveElasticsearchRepositories注解。如果没有配置基础包,基础结构将扫描带注解的配置类的包。下面的清单显示了如何为存储库使用Java配置:
例3:存储库的Java配置
@Configuration
@EnableReactiveElasticsearchRepositories
public class Config extends AbstractReactiveElasticsearchConfiguration {@Overridepublic ReactiveElasticsearchClient reactiveElasticsearchClient() {return ReactiveRestClients.create(ClientConfiguration.localhost());}
}
因为前一个示例中的存储库扩展了ReactiveSortingRepository,所以所有CRUD操作以及对实体进行排序访问的方法都是可用的。使用存储库实例是一个将依赖项注入client的问题,如下面的示例所示:
例4:对Person实体的排序访问
public class PersonRepositoryTests {@Autowired ReactivePersonRepository repository;@Testpublic void sortsElementsCorrectly() {Flux<Person> persons = repository.findAll(Sort.by(new Order(ASC, "lastname")));// ...}
}
相关文章:
Spring Data访问Elasticsearch----响应式Reactive存储库
Spring Data访问Elasticsearch----响应式Reactive存储库 一、用法二、配置 Reactive Elasticsearch存储库支持建立在存储库中解释的核心存储库支持之上,利用由 Reactive REST客户端执行的 Reactive Elasticsearch Operations提供的操作。 Spring Data Elasticsear…...
堆排序(c语言)
文章目录 前言一.什么是堆二.向下调整算法三.堆排序的创建总结 前言 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于&#x…...
开源IT自动化运维工具Ansible解析
Ansible 是一款开源的 IT 自动化工具,用于简化应用程序部署、配置管理、持续集成、基础设施即代码(Infrastructure as Code, IaC)和服务编排。它由 Michael DeHaan 创建,并在2012年首次发布,到2015年被红帽公司&#x…...
【C++】仿函数优先级队列反向迭代器
目录 一、优先级队列 1、priority_queue 的介绍 2、priority_queue 的使用 3、 priority_queue 的模拟实现 1)priority_queue()/priority_queue(first, last) 2)push(x) 3)pop() 4&#…...
UE4_调试工具_绘制调试球体
学习笔记,仅供参考! 效果: 步骤: 睁开眼睛就是该变量在此蓝图的实例上可公开编辑。 勾选效果:...
机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)
一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…...
探索.NET中的定时器:选择最适合你的应用场景
概述:.NET提供多种定时器,如 System.Windows.Forms.Timer适用于UI,System.Web.UI.Timer用于Web,System.Diagnostics.Timer用于性能监控,System.Threading.Timer和System.Timers.Timer用于一般定时任务。在.NET 6及以上…...
5467: 【搜索】流浪奶牛
题目描述 吃不到饭的奶牛Bessie一气之下决定离开农场,前往阿尔费茨山脉脚底下的农场(听说那儿的草极其美味)投靠她的亲戚Jimmy。但是前往目的地的山路崎岖,Bessie又没有吃饭,她需要尽量保存体力,以最轻松的…...
spring boot整合elasticsearch实现查询功能
第一步、添加依赖(注意版本对应关系)根据spring boot版本选择合适的版本 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.6.2</version></dependenc…...
白嫖阿里云程序员日历
https://developer.aliyun.com/topic/lingma/activities/202403?taskCode14508&recordId44f3187f7950776f494eec668a62c65f#/?utm_contentm_fission_1 「通义灵码 体验 AI 编码,开 AI 盲盒」 打开链接直接领就行了...
ubuntu20.04搭建rtmp视频服务
1.安装软件 sudo apt-get install ffmpeg sudo apt-get install nginx sudo apt-get install libnginx-mod-rtmp 2.nginx配置 修改/etc/nginx/nginx.conf文件,在末尾添加: rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…...
Request failed with status code 504,Gateway time out
问题描述: 部署在测试环境的项目在执行某功能时,后台程序在执行过程中,前端控制台在一分钟左右会报出Request failed with status code 504,Gateway time out异常。但是在本地开发环境会正常运行,并不会报出异常。 问题…...
四、Elasticsearch 进阶
自定义目录 4.1 核心概念4.1.1 索引(Index)4.1.2 类型(Type)4.1.3 文档(Document)4.1.3 字段(Field)4.1.5 映射(Mapping)4.1.6 分片(Shards&#…...
海外云手机如何帮助亚马逊引流?
随着全球化的推进,出海企业和B2B外贸企业越来越注重海外市场的开拓,这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机,能够在单一芯片上多开几个…...
Gateway新一代网关
Gateway新一代网关 1、概述 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关; 但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关SpringCloud Gateway替代Zuul。 官网&…...
Simulink中Scope图像导出在MATLAB上重新画
在Simulink中,Scope是一个常用的可视化工具,用于实时显示仿真过程中的信号波形。 1. 从Simulink Scope中导出数据 首先,您需要在Simulink的Scope中捕获或记录想要导出的数据。这通常通过配置Scope的“Logging”选项来实现。确保在仿真过程中…...
利用opencv获取系统时间
前一篇《c获取系统时间的方法-CSDN博客》博客介绍了如何在不同系统中获取系统时间的方法,但这些方法受系统的限制,如time.h就只能在Linux系统中使用。而opencv则不受系统限制,示例代码如下, #include <opencv2/opencv.hpp>…...
Go环境变量配置,及GOROOT、GOPATH的区别
一、安装Go go下载地址: https://golang.google.cn/dl/ windows下载安装,有两种方式。解压和直接安装 方式一:直接下载安装包。以.msi结尾的文件。例如: go1.22.1.windows-amd64.msi 下载后,双击后一直点下一步即…...
爬虫系列-CSS基础语法
🌈个人主页:会编程的果子君 💫个人格言:“成为自己未来的主人~” CSS全称层叠样式表 ,主要用来定义页面内容展示效果的一门语言,HTML:页面骨架,素颜CSS:页面效果美化:…...
获取比特币和莱特币的实时价格
数据来源: https://datacenter.jin10.com/reportType/dc_bitcoin_current 代码: import akshare as ak import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None) pd.set_option(display.width, 1000)cr…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
