Reactive Elasticsearch 存储库支持建立在存储库中介绍的核心存储库支持之上,利用了通过响应式 REST 客户端执行的响应式 Elasticsearch 操作提供的操作。Spring中文文档

Spring Data Elasticsearch 反应式存储库支持使用 Project Reactor 作为其选择的反应式组合库。Spring中文文档

有 3 个主要接口可供使用:Spring中文文档

用法

要使用 访问存储在 Elasticsearch 中的域对象,只需为其创建一个接口即可。 在你真正继续这样做之前,你需要一个实体。RepositorySpring中文文档

例 1.示例实体Person
public class Person {

  @Id
  private String id;
  private String firstname;
  private String lastname;
  private Address address;

  // … getters and setters omitted
}
请注意,酒店的类型必须为。idString
例 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 该方法显示对具有给定 .lastname
2 等待输入的 Finder 方法,以绑定 的参数值。Publisherfirstname
3 Finder 方法按 对匹配文档进行排序。lastname
4 Finder 方法按参数定义的表达式对匹配的文档进行排序。Sort
5 用于将偏移量和排序参数传递到数据库。Pageable
6 Finder 方法使用 / 关键字连接条件。AndOr
7 查找第一个匹配的实体。
8 该方法通过运行带有给定注释的 given 来显示所有具有给定查找的人的查询 参数。lastname@Query
9 计算所有具有匹配项的实体。firstname
10 检查是否至少存在一个匹配的实体。firstname
11 删除所有具有匹配项的实体。firstname
请注意,酒店的类型必须为。idString
1 该方法显示对具有给定 .lastname
2 等待输入的 Finder 方法,以绑定 的参数值。Publisherfirstname
3 Finder 方法按 对匹配文档进行排序。lastname
4 Finder 方法按参数定义的表达式对匹配的文档进行排序。Sort
5 用于将偏移量和排序参数传递到数据库。Pageable
6 Finder 方法使用 / 关键字连接条件。AndOr
7 查找第一个匹配的实体。
8 该方法通过运行带有给定注释的 given 来显示所有具有给定查找的人的查询 参数。lastname@Query
9 计算所有具有匹配项的实体。firstname
10 检查是否至少存在一个匹配的实体。firstname
11 删除所有具有匹配项的实体。firstname

配置

对于 Java 配置,请使用注释。如果未配置基础包, 基础结构扫描带注释的配置类的包。@EnableReactiveElasticsearchRepositoriesSpring中文文档

以下列表显示了如何对存储库使用 Java 配置:Spring中文文档

例 3.存储库的 Java 配置
@Configuration
@EnableReactiveElasticsearchRepositories
public class Config extends AbstractReactiveElasticsearchConfiguration {

  @Override
  public ReactiveElasticsearchClient reactiveElasticsearchClient() {
    return ReactiveRestClients.create(ClientConfiguration.localhost());
  }
}

由于上一个示例中的存储库扩展了,因此所有 CRUD 操作都可用 以及对实体进行排序访问的方法。使用存储库实例是一个依赖关系问题 将其注入客户端,如以下示例所示:ReactiveSortingRepositorySpring中文文档

例 4.对 Person 实体的排序访问
public class PersonRepositoryTests {

  @Autowired ReactivePersonRepository repository;

  @Test
  public void sortsElementsCorrectly() {

    Flux<Person> persons = repository.findAll(Sort.by(new Order(ASC, "lastname")));

    // ...
  }
}