栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch 7.x 检索案例(RestHighLevelClient)

Elasticsearch 7.x 检索案例(RestHighLevelClient)

1、检索案例——
        
        SearchRequest searchRequest = new SearchRequest("t11_pop*");
        
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

        
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(10);
        
        searchSourceBuilder.sort("price", SortOrder.DESC);

        
        searchSourceBuilder.fetchSource(new String[]{"*"}, Strings.EMPTY_ARRAY);

        BoolQueryBuilder boolQueryBuilder= QueryBuilders.boolQuery();

        
        QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery("Java从入门到放弃");

        
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "张三");


        
        boolQueryBuilder.filter(new ExistsQueryBuilder("name"))
                .filter(new ExistsQueryBuilder("title"));

        boolQueryBuilder.must(queryStringQueryBuilder)
                .must(queryStringQueryBuilder)
                .should(queryStringQueryBuilder)
                .mustNot(queryStringQueryBuilder);

        //添加请求方法
        searchSourceBuilder.query(boolQueryBuilder);
        //添加请求体
        searchRequest.source(searchSourceBuilder);
        SearchResponse response = null;
        try {
            response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return JSONObject.parseObject(response.toString());
2、高亮、过滤filter
        SearchRequest searchRequest = new SearchRequest("t11_pop*");

        
        BoolQueryBuilder boolQueryBuilder= QueryBuilders.boolQuery();

        
        QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery("Java从入门到放弃");

        
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "张三");


        
        boolQueryBuilder.filter(new ExistsQueryBuilder("name"))
                .filter(new ExistsQueryBuilder("title"));

        
        boolQueryBuilder.must(queryStringQueryBuilder)
                .must(queryStringQueryBuilder)
                .should(termQueryBuilder)
                .mustNot(termQueryBuilder);
        
        HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.requireFieldMatch(false)
                .field("*")
                .preTags("")
                .postTags("");
        
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        
        searchSourceBuilder
                .from(0)
                .size(10)
                .sort("price", SortOrder.DESC)
                .fetchSource(new String[]{"*"}, Strings.EMPTY_ARRAY)
                .highlighter(highlightBuilder)
                .query(boolQueryBuilder);
        
        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = null;
        try {
            searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        long value = searchResponse.getHits().getTotalHits().value;
        float maxScore = searchResponse.getHits().getMaxScore();
        
        SearchHit[] hits = searchResponse.getHits().getHits();
        for (SearchHit hit : hits) {
            Map highlightFields = hit.getHighlightFields();
            Set> entrySet = highlightFields.entrySet();
            for (Map.Entry entry :entrySet) {
                System.out.println("高亮字段为:" + entry.getKey());
                System.out.println("高亮结果为:" + entry.getValue().fragments()[0].toString());
            }
        }
3、聚合查询一
SearchRequest searchRequest = new SearchRequest("fruit");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder
                .query(QueryBuilders.matchAllQuery()) //查询条件
                //.aggregation(AggregationBuilders.sum("sum_price").field("price"))//用来设置聚合处理 sum
                //.aggregation(AggregationBuilders.avg("avg_price").field("price")) //用来设置聚合处理 avg
                .aggregation(AggregationBuilders.max("max_price").field("price")) //max
                .size(0);
        searchRequest.source(sourceBuilder);
        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

        Aggregations aggregations = searchResponse.getAggregations();
        ParsedMax parsedMax = aggregations.get("max_price");
        System.out.println(parsedMax.getValue());
4、聚合查询二

SearchRequest searchRequest = new SearchRequest("fruit");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder
                .query(QueryBuilders.matchAllQuery()) //查询条件
                .aggregation(AggregationBuilders.terms("title_group").field("title"))//用来设置聚合处理
                .size(0);
        searchRequest.source(sourceBuilder);
        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

        //处理聚合结果
        Aggregations aggregations = searchResponse.getAggregations();
        ParsedStringTerms parsedStringTerms = aggregations.get("title_group");

        List buckets = parsedStringTerms.getBuckets();
        for (Terms.Bucket bucket : buckets) {
            System.out.println(bucket.getKey() + "   "+bucket.getDocCount());
        }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753630.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号