es工具类(自定义)

es工具类(自定义),第1张

es工具类(自定义)
public class EsUtils {
    
    public static long queryCount(RestHighLevelClient client,QueryBuilder queryBuilder,String indices){
        long count =0;
        CountRequest countRequest = new CountRequest();
        countRequest.query(queryBuilder);
        countRequest.indices(indices);
        try {
            count=client.count(countRequest, RequestOptions.DEFAULT).getCount();
        } catch (IOException e) {
            log.error("ES查询信息总数异常:{}", e.getMessage());
        }
        return count;
    }
    
    public static SearchResponse find(RestHighLevelClient client,String indices, SearchSourceBuilder sourceBuilder) throws IOException {
        SearchRequest request = new SearchRequest().indices(indices);
        request.source(sourceBuilder);
        return client.search(request, RequestOptions.DEFAULT);
    }
    
    public static SearchResponse find(RestHighLevelClient client,String indices, QueryBuilder queryBuilder, int page, int size, String sort) throws IOException {
        SearchRequest request = new SearchRequest().indices(indices);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.from((page - 1) * size);
        sourceBuilder.size(size);
        if (StringUtils.isNotBlank(sort)) {
            sourceBuilder.sort(sort, SortOrder.DESC);
        }
        sourceBuilder.query(queryBuilder);
        request.source(sourceBuilder);
        return client.search(request, RequestOptions.DEFAULT);
    }
    
    public SearchResponse findAndSort(RestHighLevelClient client,String indices, QueryBuilder queryBuilder, int from, int size, String sort, SortOrder order) throws IOException {
        SearchRequest request = new SearchRequest().indices(indices);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.from((from - 1) * size);
        sourceBuilder.size(size);
        sourceBuilder.sort(sort, order);
        sourceBuilder.query(queryBuilder);
        request.source(sourceBuilder);
        return client.search(request, RequestOptions.DEFAULT);
    }

    
    public static boolean exists(RestHighLevelClient client, String indices, GetRequest getRequest){
        boolean b=true;
        try {
            b = client.exists(getRequest, RequestOptions.DEFAULT);
        } catch (IOException e) {
            log.error("ES查询单条数是否存在,抛出异常:{}", e.getMessage());
        }
        return b;
    }

    
    public SearchResponse agg(RestHighLevelClient client, String indices, QueryBuilder queryBuilder, AggregationBuilder aggregationBuilder) throws IOException {
        SearchRequest request = new SearchRequest().indices(indices);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.size(0);
        sourceBuilder.query(queryBuilder);
        sourceBuilder.aggregation(aggregationBuilder);
        request.source(sourceBuilder);
        return client.search(request, RequestOptions.DEFAULT);
    }
    
    public Map aggoneArgs(RestHighLevelClient client,String indices, QueryBuilder queryBuilder, String args1, int size) {
        Map map = null;
        try {
            map = new HashMap<>();
            SearchRequest request = new SearchRequest().indices(indices);
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.size(0);
            sourceBuilder.query(queryBuilder);
            TermsAggregationBuilder agg1 = AggregationBuilders.terms(args1).field(args1 + ".keyword").size(size);
            sourceBuilder.aggregation(agg1);
            request.source(sourceBuilder);
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            Terms terms = response.getAggregations().get(args1);
            for (Terms.Bucket bucket : terms.getBuckets()) {
                map.put(bucket.getKeyAsString(), bucket.getDocCount());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return map;
    }
    
    public Map> aggTwoArgs(RestHighLevelClient client,String indices, QueryBuilder queryBuilder, String args1, String args2, int size) {
        Map> map = null;
        try {
            map = new HashMap<>();
            SearchRequest request = new SearchRequest().indices(indices);
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.size(0);
            sourceBuilder.query(queryBuilder);
            TermsAggregationBuilder agg1 = AggregationBuilders.terms(args1).field(args1 + ".keyword").size(size);
            TermsAggregationBuilder agg2 = AggregationBuilders.terms(args2).field(args2 + ".keyword").size(size);
            agg1.subAggregation(agg2);
            sourceBuilder.aggregation(agg1);
            request.source(sourceBuilder);
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            Aggregations aggregations = response.getAggregations();
            Terms terms1 = aggregations.get(args1);
            for (Terms.Bucket bucket1 : terms1.getBuckets()) {
                Terms terms2 = bucket1.getAggregations().get(args2);
                Map map1 = new HashMap<>();
                for (Terms.Bucket bucket2 : terms2.getBuckets()) {
                    map1.put(bucket2.getKeyAsString(), bucket2.getDocCount());
                }
                map.put(bucket1.getKeyAsString(), map1);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return map;

    }

    
    public Map scrollQuery1(RestHighLevelClient client,String indices,int page,int size) throws IOException {
        ArrayList strings = new ArrayList<>();
        HashMap dataMap = new HashMap<>();
        SearchRequest searchRequest = new SearchRequest(indices);
        Scroll scroll = new Scroll(Timevalue.timevalueMinutes(5L));
        searchRequest.scroll(scroll);
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

        MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
        searchSourceBuilder.query(matchAllQueryBuilder);
        searchSourceBuilder.size(size);

        searchRequest.source(searchSourceBuilder);
        SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
        String scrollId = response.getScrollId();
        SearchHit[] searchHits = response.getHits().getHits();

        System.out.println(response.getHits().getTotalHits());
        for (SearchHit searchHit : searchHits) {
            strings.add(searchHit.getSourceAsString());
        }
        dataMap.put("scroll",scrollId);
        dataMap.put("data",strings);
        return dataMap;
    }
    
    public List scrollQuery2(RestHighLevelClient client, String scrollId) throws IOException {
        ArrayList strings = new ArrayList<>();
        Scroll scroll = new Scroll(Timevalue.timevalueMinutes(5L));
        SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
        scrollRequest.scroll(scroll);
        SearchResponse response = client.scroll(scrollRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = response.getHits().getHits();
        for (SearchHit searchHit : hits) {
            strings.add(searchHit.getSourceAsString());
        }
        return strings;
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5701090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存