es elasticsearch 游标查询 分页查询

绝地灬酷狼 2023-07-19 08:23 95阅读 0赞

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

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

  1. //模糊查询
  2. boolQueryBuilder.must(QueryBuilders.wildcardQuery("orderNo.keyword", "*" + filters.get(key).toString() + "*"));
  3. //日期精准查询
  4. Date startDate = DateUtils.parseDate(filters.get(key).toString() + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
  5. Date endDate = DateUtils.parseDate(filters.get(key).toString() + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
  6. 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); //游标查询

  1. //游标分页查询
  2. SearchResponse searchResponse= ScrollSearchUtils.scrollSearchAll(currentPage, pageSize, restHighLevelClient, searchRequest);SearchHits hits = searchResponse.getHits();List<OrderEntry> list = new ArrayList<>();
  3. if (searchResponse != null && hits.getHits().length > 0) {
  4. for (SearchHit hit : searchResponse.getHits().getHits()) {
  5. OrderEntry order = JSON.parseObject(hit.getSourceAsString(), OrderEntry.class);
  6. list.add(order);
  7. }
  8. return list;
  9. }
  10. private static SearchResponse scrollSearchAll(int currentPage, int pageSize, RestHighLevelClient restHighLevelClient, SearchRequest searchRequest) throws IOException {
  11. int from = (currentPage - 1) * pageSize;
  12. int size = pageSize;
  13. //设置游标有效期
  14. Scroll scroll = new Scroll(TimeValue.timeValueMinutes(3L));
  15. searchRequest.scroll(scroll);
  16. SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
  17. String scrollId = searchResponse.getScrollId();
  18. SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
  19. scrollRequest.scroll(scroll);
  20. int maxNum = from / size;
  21. for (int i = 0; i < maxNum; i++) {
  22. searchResponse = restHighLevelClient.scroll(scrollRequest, RequestOptions.DEFAULT);
  23. }
  24. //释放游标
  25. if (scrollId != null) {
  26. ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
  27. clearScrollRequest.addScrollId(scrollId);
  28. restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
  29. }
  30. return searchResponse;
  31. }

发表评论

表情:
评论列表 (有 0 条评论,95人围观)

还没有评论,来说两句吧...

相关阅读