// 分页参数 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;
}
还没有评论,来说两句吧...