es 分页查询
public<T> Page pageQuery(String index, ProgrammeRequest request, QueryBuilder queryBuilder,Class<T> tClass) throws IOException { Integer pageNum = request.getPageNum(); Integer pageSize = request.getPageSize(); int from = (pageNum - 1) * pageSize; SearchRequest searchRequest = new SearchRequest(index); SearchSourceBuilder builder = new SearchSourceBuilder(); builder.query(queryBuilder) .from(from) .size(pageSize) .sort("id", SortOrder.ASC); searchRequest.source(builder); long total = 0; SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); if (searchResponse.status().equals(RestStatus.OK)){ long totalHits = searchResponse.getHits().getTotalHits().value; if (totalHits >= 10000){ // 去es 查询记录总数 CountRequest countRequest = new CountRequest(index); countRequest.source(builder); CountResponse count = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT); total = count.getCount(); }else { total = totalHits; } SearchHit[] hits = searchResponse.getHits().getHits(); List<T> records = Arrays.stream(hits).map(v -> JSONObject.parseObject(v.getSourceAsString(), tClass)).collect(Collectors.toList()); Page<T> tPage = new Page<>(); tPage.setRecords(records); tPage.setTotal(total); tPage.setSize(pageSize); tPage.setCurrent(pageNum); tPage.setPages(total / pageNum == 0 ? total / pageNum : total / pageNum + 1); return tPage; } return null; }
做一下笔记
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步