38.如何使用java实现scroll?嘻哈的简写笔记——Elastic Search

编程知识 行业动态 更新时间:2024-06-13 00:21:18
@Test //深分页Scroll
public void test22() throws IOException {
        //Java实现scroll分页
        //1. 创建SearchRequest
        SearchRequest request = new SearchRequest(indextName);
        request.types(typeName);

        //2. 指定scroll信息
        request.scroll(TimeValue.timeValueMinutes(1L));

        //3. 指定查询条件
        SearchSourceBuilder builder = new SearchSourceBuilder();
        builder.size(4);
        builder.sort("price", SortOrder.DESC);
        builder.query(QueryBuilders.matchAllQuery());

        request.source(builder);

        //4. 获取返回结果scrollId,source
        SearchResponse resp = ClientUtils.client().search(request, RequestOptions.DEFAULT);

        String scrollId = resp.getScrollId();
        System.out.println("----------首页---------");
        for (SearchHit hit : resp.getHits().getHits()) {
            System.out.println(hit.getSourceAsMap());
        }
        //java也是一样要查询两次,先把我们的首页给查询出来;
        //查询出来之后我们要获取他的id
        //然后利用他的id去查询他的下一页
        while(true) {
            //5. 循环 - 创建SearchScrollRequest
            SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);//在这里获取id去查下一页;

            //6. 指定scrollId的生存时间
            scrollRequest.scroll(TimeValue.timeValueMinutes(1L));

            //7. 执行查询获取返回结果
            SearchResponse scrollResp = ClientUtils.client().scroll(scrollRequest, RequestOptions.DEFAULT);

            //8. 判断是否查询到了数据,输出
            SearchHit[] hits = scrollResp.getHits().getHits();
            //循环输出下一页
            if(hits != null && hits.length > 0) {
                System.out.println("----------下一页---------");
                for (SearchHit hit : hits) {
                    System.out.println(hit.getSourceAsMap());
                }
            }else{
                //9. 判断没有查询到数据-退出循环
                System.out.println("----------结束---------");
                break;
            }
        }

        //查完之后我们把存进缓存的id给删除;
        //10. 创建CLearScrollRequest
        ClearScrollRequest clearScrollRequest = new ClearScrollRequest();

        //11. 指定ScrollId
        clearScrollRequest.addScrollId(scrollId);

        //12. 删除ScrollId
        ClearScrollResponse clearScrollResponse = ClientUtils.client().clearScroll(clearScrollRequest, RequestOptions.DEFAULT);

        //13. 输出结果
        System.out.println("删除scroll:" + clearScrollResponse.isSucceeded());
}

。。。。。。。。。。。。。

嘻哈的简写笔记

。。。。。。。。。。。。。

更多推荐

38.如何使用java实现scroll?嘻哈的简写笔记——Elastic Search

本文发布于:2023-03-31 14:31:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/687cdb5f51ce1f7174a3171f641fb7bb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简写   如何使用   嘻哈   笔记   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!