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);
    }

说明==注释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值