dw做的网站怎么发布到网上生猪价格今日猪价
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")));// ...}
}