ESRestTemplate - 浅分页

说明:

  • 本方法采用 from & size 方式实现
  • 使用该种方式需要通过 kibana 修改浅分页的查询保护限制,语法:表示上线从默认1w修改为1000w
PUT /索引名/_settings
{ "index" : { "max_result_window" : 10000000}}

实战:

/**
 * 分页查询ebay的es邮件数据
 * @param page 当前页, size 偏移量
 */
 public void getEbayMailByES(Integer page, Integer size) {
    // 设置查询参数
    QueryBuilder queryBuilders = QueryBuilders.matchAllQuery();
    NativeSearchQuery nativeSearchQuery
            = new NativeSearchQueryBuilder().withQuery(queryBuilders).withPageable(PageRequest.of(page-1, size)).build();

    // 查询es数据
    long l = System.currentTimeMillis();
    SearchHits<实体类> search = elasticsearchRestTemplate.search(nativeSearchQuery, 实体类.class);
    log.info("本次查询ES第" + page + "页数据" + size + "条,耗时:" + (System.currentTimeMillis() - l) + "毫秒");
 }