java-api-rest

本文最后更新于 2021-07-25 12:01:37

RestApi

@SpringBootTest
public class TestRest {

    @Test
    void testRestInsert() throws IOException {
        //1.连接rest接口
        HttpHost http = new HttpHost("192.168.204.209", 9200, "http");
        RestClientBuilder restClientBuilder = RestClient.builder(http);//rest构建器
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//获取高级客户端对象

        //2.封装请求对象
        //BulkRequest bulkRequest = new BulkRequest(); //用于批量操作
        IndexRequest indexRequest = new IndexRequest("test_rest", "_doc", "1");
        HashMap skuMap = new HashMap();
        skuMap.put("name","法拉利 LaFerrari Aperta");
        skuMap.put("brandName","法拉利");
        skuMap.put("categoryName","超级跑车");
        HashMap spec = new HashMap();
        spec.put("动力","963匹");
        spec.put("扭矩","880N/m");
        spec.put("车长","4975mm");
        spec.put("重量","1250kg");
        skuMap.put("spec",spec);
        skuMap.put("createTime","2017-08-10");
        skuMap.put("price",43000000);
        skuMap.put("saleNum",209);
        skuMap.put("commentNum",6128746);
        indexRequest.source(skuMap);
        //bulkRequest.add(indexRequest); //用于批量操作
        //3.获取响应结果
        IndexResponse indexResponse = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
        //BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT); //用于批量操作
        int status = indexResponse.status().getStatus();
        System.out.println(status);
        restHighLevelClient.close();
    }

    @Test
    void testRestQueryMatch() throws IOException {
        //1.连接rest接口
        HttpHost http = new HttpHost("192.168.204.209", 9200, "http");
        RestClientBuilder restClientBuilder = RestClient.builder(http);//rest构建器
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//获取高级客户端对象

        //2.封装查询请求
        SearchRequest searchRequest = new SearchRequest("test_rest");
        searchRequest.types("_doc"); //设置查询的类型
        //创建查询条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查询源构建器
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("categoryName", "超级跑车");
        searchSourceBuilder.query(matchQueryBuilder);
        searchRequest.source(searchSourceBuilder);

        //3.获取查询结果
        SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits searchHits = response.getHits();
        long totalHits = searchHits.getTotalHits();
        System.out.println("记录数:"+totalHits);
        SearchHit[] hits = searchHits.getHits();
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
        restHighLevelClient.close();
    }



    @Test
    void testRestQueryBool() throws IOException {
        //1.连接rest接口
        HttpHost http = new HttpHost("192.168.204.209", 9200, "http");
        RestClientBuilder restClientBuilder = RestClient.builder(http);//rest构建器
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//获取高级客户端对象

        //2.封装查询请求
        SearchRequest searchRequest = new SearchRequest("test_rest");
        searchRequest.types("_doc"); //设置查询的类型
        //创建查询条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查询源构建器
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //布尔查询构建器
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "LaFerrari");
        boolQueryBuilder.must(matchQueryBuilder);
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("brandName", "法拉利");
        boolQueryBuilder.must(termQueryBuilder);
        searchSourceBuilder.query(boolQueryBuilder);
        searchRequest.source(searchSourceBuilder);

        //3.获取查询结果
        SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits searchHits = response.getHits();
        long totalHits = searchHits.getTotalHits();
        System.out.println("记录数:" + totalHits);
        SearchHit[] hits = searchHits.getHits();
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
        restHighLevelClient.close();
    }


    @Test
    void testRestQueryfilter() throws IOException {
        //1.连接rest接口
        HttpHost http = new HttpHost("192.168.204.209", 9200, "http");
        RestClientBuilder restClientBuilder = RestClient.builder(http);//rest构建器
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//获取高级客户端对象

        //2.封装查询请求
        SearchRequest searchRequest = new SearchRequest("test_rest");
        searchRequest.types("_doc"); //设置查询的类型
        //创建查询条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查询源构建器
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //布尔查询构建器
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("brandName", "法拉利");
        boolQueryBuilder.filter(termQueryBuilder);
        searchSourceBuilder.query(boolQueryBuilder);
        searchRequest.source(searchSourceBuilder);

        //3.获取查询结果
        SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits searchHits = response.getHits();
        long totalHits = searchHits.getTotalHits();
        System.out.println("记录数:" + totalHits);
        SearchHit[] hits = searchHits.getHits();
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
        restHighLevelClient.close();
    }

    @Test
    void testRestQueryAggregation() throws IOException {
        //连接rest接口
        HttpHost http = new HttpHost("192.168.204.209", 9200, "http");
        RestClientBuilder restClientBuilder = RestClient.builder(http);//rest构建器
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//获取高级客户端对象
        //封装查询请求
        SearchRequest searchRequest = new SearchRequest("test_rest");
        searchRequest.types("_doc"); //设置查询的类型
        //创建查询条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查询源构建器
        TermsAggregationBuilder aggregation = AggregationBuilders.terms("类型名称").field("categoryName");
        searchSourceBuilder.aggregation(aggregation);
        searchSourceBuilder.size(0);
        searchRequest.source(searchSourceBuilder);
        //获取查询结果
        SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        Aggregations aggregations = response.getAggregations();
        Map<String, Aggregation> map = aggregations.getAsMap();
        Terms terms = (Terms) map.get("类型名称");
        List<? extends Terms.Bucket> buckets = terms.getBuckets();
        for (Terms.Bucket bucket : buckets) {
            System.out.println(bucket.getKeyAsString()+":"+bucket.getDocCount());
        }
        restHighLevelClient.close();


        //高亮设置
//        HighlightBuilder highlightBuilder = new HighlightBuilder();
//        highlightBuilder.field("name").preTags("<font style='color:red'>").postTags("</font>");
//        searchSourceBuilder.highlighter(highlightBuilder);
    }
}

java-api-rest
https://jiajun.xyz/2020/10/10/java/es/java-api-rest/
作者
Lambda
发布于
2020年10月10日
更新于
2021年7月25日
许可协议