SpringBoot整合之ElasticSearch条件查询+分页

快来打我* 2023-10-03 12:32 88阅读 0赞

入门请看
es从入门到放弃教学

首先说明我的返回值是一个 PageUtils,因为要做分页

  1. /**
  2. * 列表
  3. */
  4. @RequestMapping("/list")
  5. public R list(@RequestParam Map<String, Object> params,@RequestBody TShopEntity tShopEntity) throws IOException {
  6. PageUtils page = tShopService.eslist(params,tShopEntity);
  7. return R.ok().put("page", page);
  8. }

service层代码

  1. @Override
  2. public PageUtils eslist(Map<String, Object> params, TShopEntity shoplaode) throws IOException {
  3. // 1 创建检索请求
  4. SearchRequest searchrequest = new SearchRequest("shop");
  5. // 创建条件构建器 SearchSourceBuilder
  6. SearchSourceBuilder builder = new SearchSourceBuilder();
  7. System.out.println(params);
  8. //因为Obj不能直接转成int所以要做一下处理
  9. String page1 = (String) params.get("page");
  10. Integer page= Integer.valueOf(page1);
  11. String limit1 = (String) params.get("limit");
  12. Integer limit= Integer.valueOf(limit1);
  13. if (shoplaode.getCname()!=null&&shoplaode.getCname()!=""){
  14. //符合查询 符合查询条件
  15. //构建查询条件
  16. BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
  17. //符合查询用bool must代表必须满足 matchQuery匹配
  18. BoolQueryBuilder must = boolQueryBuilder.must(QueryBuilders.matchQuery("cname", shoplaode.getCname()));
  19. //执行查询条件
  20. builder.query(must);
  21. }
  22. //分页
  23. builder.from((page-1)*limit);
  24. builder.size(limit);
  25. //查询条件构建器
  26. searchrequest.source(builder);
  27. SearchResponse search = restHighLevelClient.search(searchrequest, GuliESConfig.COMMON_OPTIONS);
  28. //查询,获取结果
  29. SearchHits hits = search.getHits();
  30. long value = hits.getTotalHits().value;
  31. //获取hits数组
  32. SearchHit[] hits1 = hits.getHits();
  33. ArrayList<TShopEntity> arr = new ArrayList<>();
  34. for (SearchHit searchHit : hits1) {
  35. //获取到hits中的每一个asString
  36. String sourceAsString = searchHit.getSourceAsString();
  37. //将asString中的数据封装
  38. TShopEntity tShopEntity = JSONObject.parseObject(sourceAsString, TShopEntity.class);
  39. arr.add(tShopEntity);
  40. }
  41. return new PageUtils(arr, Math.toIntExact(value), limit, page);
  42. }

说明==注释

发表评论

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

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

相关阅读