10 排序&分页&高亮

1. 排序,分页

@GetMapping("boolQuery2")
    public void boolQuery2() throws IOException {
        //1. 准备request
        SearchRequest request = new SearchRequest("hotel");

        //2. 组织DSL参数
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        //添加must条件
        boolQuery.must(QueryBuilders.termQuery("city","南京市浦口区"));
        //添加filter条件
        boolQuery.filter(QueryBuilders.rangeQuery("price").lt(200));

        request.source().query(boolQuery);
        request.source().from(0).size(2);
        request.source().sort("price", SortOrder.DESC);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        //3.解析结果
        SearchHits searchHits = response.getHits();
        //4. 查询总条数
        long value = searchHits.getTotalHits().value;
        System.out.println("总条数: " + value);
        //5.  数据
        SearchHit[] hits = searchHits.getHits();
        for (SearchHit hit: hits) {
            String json = hit.getSourceAsString();
            System.out.println(json);
        }
    }
2024-06-24 01:34:46.214  INFO 9052 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2024-06-24 01:34:46.215  INFO 9052 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 0 ms
总条数: 1
{"address":"柳州东路1号","brand":"如家","business":"弘阳商圈","city":"南京市浦口区","id":1,"location":"33.33,131.33","name":"如家","pic":"http://www.bai.com/images/rujia.png","price":189,"score":7,"starName":"二星"}

2. 高亮显示

@GetMapping("highlight")
    public void highlight() throws IOException {
        //1. 准备request
        SearchRequest request = new SearchRequest("hotel");

        //2. 组织DSL参数
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        //添加must条件
        boolQuery.must(QueryBuilders.termQuery("city","南京市浦口区"));
        //添加filter条件
        boolQuery.filter(QueryBuilders.rangeQuery("price").lt(200));

        request.source().query(boolQuery);
        request.source().from(0).size(2);
        request.source().sort("price", SortOrder.DESC);
        request.source().highlighter(new HighlightBuilder()
                .field("name")
                .requireFieldMatch(false));
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        //3.解析结果
        SearchHits searchHits = response.getHits();
        //4. 查询总条数
        long value = searchHits.getTotalHits().value;
        System.out.println("总条数: " + value);
        //5.  数据
        SearchHit[] hits = searchHits.getHits();
        for (SearchHit hit: hits) {
            String json = hit.getSourceAsString();
            System.out.println(json);
            System.out.println("------- 高亮 -----------");
            Map<String, HighlightField> highlightFields = hit.getHighlightFields();
            //取出高亮结果字段
            HighlightField name = highlightFields.get("name");
            //取出高亮结果数组中的第一个
            String string = name.getFragments()[0].string();
            System.out.println(string);

        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值