这次使用elasticsearch 需要判断前端是否传了参数,如果传了就添加这个查询条件,没传的话,就不要这个查询条件,获得查询结果并分页
代码如下
public IMoocJSONResult searchComp(String ulanguage,String ucompname, String utype, String uareaid,Integer pageNo, Integer pageSize){
// 构建查询条件
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
BoolQueryBuilder boolQueryBuilder = boolQuery();
if (null != ulanguage) {
boolQueryBuilder.must(termQuery("ulanguage", ulanguage));
}
if (null != ucompname) {
boolQueryBuilder.must(matchQuery("ucompname", ucompname));
}
if (null != utype) {
boolQueryBuilder.must(termQuery("utype", utype));
}
if (null != uareaid) {
boolQueryBuilder.must(termQuery("uareaid", uareaid));
}
queryBuilder.withQuery(boolQueryBuilder).build();
if(pageNo ==null){
pageNo=DEFAULT_PAGE;
}
if(pageSize==null){
pageSize=DEFAULT_SIZE;
}
// 设置分页参数
queryBuilder.withPageable(PageRequest.of(pageNo-1,pageSize));
Page<Comp> list = this.compRepository.search(queryBuilder.build());
PagedResult pagedResult = new PagedResult();
pagedResult.setPage(list.getNumber());// 当前页数
pagedResult.setTotal(list.getTotalPages());// 总页数
// pagedResult.setRows(list);// 数据内容
pagedResult.setContents(list);// 数据内容
pagedResult.setRecords(list.getTotalElements());// 总条数
return IMoocJSONResult.ok(pagedResult);
}
这样就可以执行成功了