es elasticsearch 游标查询 分页查询

 

// 分页参数
Integer currentPage = 1;
Integer pageSize = 10;


BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

//模糊查询
boolQueryBuilder.must(QueryBuilders.wildcardQuery("orderNo.keyword", "*" + filters.get(key).toString() + "*"));
//日期精准查询
Date startDate = DateUtils.parseDate(filters.get(key).toString() + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
Date endDate = DateUtils.parseDate(filters.get(key).toString() + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
boolQueryBuilder.must(QueryBuilders.rangeQuery("flights.flightDate").lte(endDate.getTime()).gte(startDate.getTime()));


SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder).size(pageSize);
//searchSourceBuilder.sort("createTime", SortOrder.DESC);排序
SearchRequest searchRequest = new SearchRequest(ORDER_INDEX);
searchRequest.source(searchSourceBuilder);
//游标查询

//游标分页查询
SearchResponse searchResponse= ScrollSearchUtils.scrollSearchAll(currentPage, pageSize, restHighLevelClient, searchRequest);SearchHits hits = searchResponse.getHits();List<OrderEntry> list = new ArrayList<>();
if (searchResponse != null && hits.getHits().length > 0) {
for (SearchHit hit : searchResponse.getHits().getHits()) {
OrderEntry order = JSON.parseObject(hit.getSourceAsString(), OrderEntry.class);
list.add(order);
}
return list;
}
private static SearchResponse scrollSearchAll(int currentPage, int pageSize, RestHighLevelClient restHighLevelClient, SearchRequest searchRequest) throws IOException {
    int from = (currentPage - 1) * pageSize;
    int size = pageSize;
    //设置游标有效期
    Scroll scroll = new Scroll(TimeValue.timeValueMinutes(3L));
    searchRequest.scroll(scroll);
    SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
    String scrollId = searchResponse.getScrollId();
    SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
    scrollRequest.scroll(scroll);
    int maxNum = from / size;
    for (int i = 0; i < maxNum; i++) {
        searchResponse = restHighLevelClient.scroll(scrollRequest, RequestOptions.DEFAULT);
    }
    //释放游标
    if (scrollId != null) {
        ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
        clearScrollRequest.addScrollId(scrollId);
        restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
    }
    return searchResponse;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值