SpringBoot整合之ElasticSearch条件查询+分页
入门请看
es从入门到放弃教学
首先说明我的返回值是一个 PageUtils,因为要做分页
/**
* 列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,@RequestBody TShopEntity tShopEntity) throws IOException {
PageUtils page = tShopService.eslist(params,tShopEntity);
return R.ok().put("page", page);
}
service层代码
@Override
public PageUtils eslist(Map<String, Object> params, TShopEntity shoplaode) throws IOException {
// 1 创建检索请求
SearchRequest searchrequest = new SearchRequest("shop");
// 创建条件构建器 SearchSourceBuilder
SearchSourceBuilder builder = new SearchSourceBuilder();
System.out.println(params);
//因为Obj不能直接转成int所以要做一下处理
String page1 = (String) params.get("page");
Integer page= Integer.valueOf(page1);
String limit1 = (String) params.get("limit");
Integer limit= Integer.valueOf(limit1);
if (shoplaode.getCname()!=null&&shoplaode.getCname()!=""){
//符合查询 符合查询条件
//构建查询条件
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//符合查询用bool must代表必须满足 matchQuery匹配
BoolQueryBuilder must = boolQueryBuilder.must(QueryBuilders.matchQuery("cname", shoplaode.getCname()));
//执行查询条件
builder.query(must);
}
//分页
builder.from((page-1)*limit);
builder.size(limit);
//查询条件构建器
searchrequest.source(builder);
SearchResponse search = restHighLevelClient.search(searchrequest, GuliESConfig.COMMON_OPTIONS);
//查询,获取结果
SearchHits hits = search.getHits();
long value = hits.getTotalHits().value;
//获取hits数组
SearchHit[] hits1 = hits.getHits();
ArrayList<TShopEntity> arr = new ArrayList<>();
for (SearchHit searchHit : hits1) {
//获取到hits中的每一个asString
String sourceAsString = searchHit.getSourceAsString();
//将asString中的数据封装
TShopEntity tShopEntity = JSONObject.parseObject(sourceAsString, TShopEntity.class);
arr.add(tShopEntity);
}
return new PageUtils(arr, Math.toIntExact(value), limit, page);
}
说明==注释
还没有评论,来说两句吧...