当前位置: 首页 > news >正文

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")));// ...}
}
http://www.lryc.cn/news/322012.html

相关文章:

  • 堆排序(c语言)
  • 开源IT自动化运维工具Ansible解析
  • 【C++】仿函数优先级队列反向迭代器
  • UE4_调试工具_绘制调试球体
  • 机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)
  • 探索.NET中的定时器:选择最适合你的应用场景
  • 5467: 【搜索】流浪奶牛
  • spring boot整合elasticsearch实现查询功能
  • 白嫖阿里云程序员日历
  • ubuntu20.04搭建rtmp视频服务
  • Request failed with status code 504,Gateway time out
  • 四、Elasticsearch 进阶
  • 海外云手机如何帮助亚马逊引流?
  • Gateway新一代网关
  • Simulink中Scope图像导出在MATLAB上重新画
  • 利用opencv获取系统时间
  • Go环境变量配置,及GOROOT、GOPATH的区别
  • 爬虫系列-CSS基础语法
  • 获取比特币和莱特币的实时价格
  • Axure案例分享—折叠面板(附下载地址)
  • SQLiteC/C++接口详细介绍sqlite3_stmt类(五)
  • 单片机-- 数电(3)
  • 基于Java中的SSM框架实现在线通用旅游平台网站系统项目【项目源码+论文说明】计算机毕业设计
  • 「数据分析」之零基础入门数据挖掘
  • 【力扣】383.赎金信
  • 【Linux】传输层协议:TCP/UDP
  • Linux运维_Bash脚本_构建安装Systemd-250
  • 中国城市统计年鉴、中国县域统计年鉴、中国财政统计年鉴、中国税务统计年鉴、中国科技统计年鉴、中国卫生统计年鉴​
  • C++:继承:面向对象编程的重要特性
  • oneMKL--FFT 基本使用