首页 > 编程笔记 > Java笔记 阅读:21

Elasticsearch分页查询的2种实现方式

分页查询有两种实现方式,分别是:

Pageable分页

我们首先来看 Spring Data 自带的分页方案,也就是 Pageable 分页,测试代码如下:
@Test
public void fetchPageCustomers() {
    Sort sort = new Sort(Sort.Direction.DESC, "address.keyword");
    Pageable pageable = PageRequest.of(0, 10, sort);
    Page<Customer> customers=repository.findByAddress("北京", pageable);
    System.out.println("Page customers "+customers.getContent().toString());
}
上面的示例分页查询地址包含“北京”的客户信息,并且按照地址进行排序,每页显示 10 条。需要注意的是,排序时使用的关键字是 address.keyword,而不是 address,属性后带“.keyword”代表精确匹配。

QueryBuilder分页

除了 Spring Data 自带的 Pageable 分页之外,我们也可以使用 QueryBuilder 来构建分页查询。示例代码如下:
@@Test
public void fetchPage2Customers() {
    QueryBuilder customerQuery = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("address", "北京"));
    Page<Customer> page = repository.search(customerQuery, PageRequest.of(0, 10));
    System.out.println("Page customers "+page.getContent().toString());
}
使用 QueryBuilder 可以构建多条件查询,再结合 PageRequest,最后调用 search( ) 方法完成分页查询。

QueryBuilders 包含的一些方法与 AND、OR、NOT 一一对应:

相关文章