反应弹性搜索仓库

响应式 Elasticsearch 仓库支持基于 Repositories 中解释的核心仓库支持,利用响应式 Elasticsearch作响应式 REST 客户端执行的作。spring-doc.cadn.net.cn

Spring Data Elasticsearch 响应式仓库支持 Project Reactor 作为其首选的响应式组合库。spring-doc.cadn.net.cn

主要有三种接口:spring-doc.cadn.net.cn

用法

访问存储在 Elasticsearch 中的域对象时,使用存储 库只需为它创建一个接口即可。 在你真正开始行动之前,你需要一个实体。spring-doc.cadn.net.cn

例子1。样本实体
public class Person {

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

  // … getters and setters omitted
}
请注意身份证房产必须是类型字符串.
例子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 该方法显示所有满足 的查询姓氏.
2 等待输入的查找方法发行人绑定参数值名称.
3 查找方法通过以下方式排序匹配文件姓氏.
4 查找方法通过定义的表达式对匹配文档进行排序排序参数。
5 可页面将偏移和排序参数传递给数据库。
6 查找方法结合准则 / 关键字。
7 找到第一个匹配的实体。
8 该方法显示所有满足 的查询姓氏通过运行注释查找@Query给定 参数。
9 统计所有匹配实体名称.
10 检查至少有一个实体与之匹配名称存在。
11 删除所有与匹配的实体名称.

配置

对于 Java 配置,可以使用@EnableReactiveElasticsearchRepositories注解。如果没有基础包的配置, 基础设施扫描注释配置类的包。spring-doc.cadn.net.cn

以下列表展示了如何使用 Java 配置来构建仓库:spring-doc.cadn.net.cn

例子3。仓库的 Java 配置
@Configuration
@EnableReactiveElasticsearchRepositories
public class Config extends AbstractReactiveElasticsearchConfiguration {

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

因为前面例子中的仓库是扩展的ReactiveSortingRepository,所有CRUD作均可使用。 以及对实体进行排序访问的方法。与仓库实例合作是依赖问题 将它注入客户端,如下示例所示:spring-doc.cadn.net.cn

例子4。对人实体的排序访问
public class PersonRepositoryTests {

  @Autowired ReactivePersonRepository repository;

  @Test
  public void sortsElementsCorrectly() {

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

    // ...
  }
}