通过java查询es的数据总量返回数据接口

 public long rangeCount(String indexName, String timeFileds, String vehicleidFields,
                           String startTime, String endTime, String[] includeFields,
                            String rangeName,String gte ,String lte) throws IOException {
        Map m = new HashMap<>();
        m.put("total", 0);
        try {
            // 设置索引名
            CountRequest countRequest = new CountRequest(indexName);
            // 构建查询
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            // 构建查询语句
            BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
            // 条件查询 添加起始时间
            queryBuilder.must(QueryBuilders.rangeQuery(timeFileds + ".keyword").from(startTime,true).to(endTime,true));

            // 设置es查询条件
            sourceBuilder.query(queryBuilder);
            sourceBuilder.query(QueryBuilders.rangeQuery(rangeName).gte(gte).lte(lte));

            countRequest.source(sourceBuilder);
            CountResponse countResponse = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT);
            // 遍历查询结果
            RestStatus status = countResponse.status(); // ES请求状态
            if (status != RestStatus.OK) {
                System.out.println("未查询出结果");
                return 0;
            }
            System.out.println("====查询结果展示====");
            long count = countResponse.getCount();
            System.out.println("count = " + count);
            return count;
        }catch (Exception e){
            logger.error("ES查询失败",e);
        }
        return 0;
    }

返回值为long类型,在后面调用的时候,如果需要指定条件,可以设置,不需要则注释即可。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐