elasticsearch判断参数是否为空,执行多条件查询,并分页

本文介绍如何在使用Elasticsearch进行搜索时,根据前端是否传递特定参数动态添加查询条件,实现灵活的搜索功能,并展示如何进行分页处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次使用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);
    }

这样就可以执行成功了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值