如何使用ElasticsearchTemplate执行滚动查询

发布时间:2021-07-06 18:12:15 作者:chen
来源:亿速云 阅读:683

这篇文章主要讲解了“如何使用ElasticsearchTemplate执行滚动查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用ElasticsearchTemplate执行滚动查询”吧!

使用Elasticsearch查询大量数据时基本的分页查询就会报错,这种情况下可以使用scroll(滚动)查询

直接上代码:

// 创建查询条件对象
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();

// 拼接查询条件
queryBuilder.must(QueryBuilders.termQuery("status", 1)); 假设查询状态为1的

// 创建查询对象
SearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withIndices("test_index")//索引名
                .withTypes("test")//类型名
                .withQuery(queryBuilder)// 查询条件对象
                .withPageable(PageRequest.of(0, 1000))//从0页开始查,每页1000个结果
                .build();

// 滚动查询
ScrolledPage<TestEntity> scroll = (ScrolledPage<TestEntity>) elasticsearchTemplate.startScroll(3000, searchQuery, TestEntity.class);

// 判断是否有内容
while (scroll.hasContent()) {
	List<TestEntity> content = scroll.getContent();
	// 业务逻辑省略
	//取下一页,scrollId在es服务器上可能会发生变化,需要用最新的。发起continueScroll请求会重新刷新快照保留时间
	scroll = (ScrolledPage<TestEntity>) elasticsearchTemplate.continueScroll(scroll.getScrollId(), 3000, EstateInfoEntity.class);
}

// 最后释放查询
elasticsearchTemplate.clearScroll(scroll.getScrollId());

感谢各位的阅读,以上就是“如何使用ElasticsearchTemplate执行滚动查询”的内容了,经过本文的学习后,相信大家对如何使用ElasticsearchTemplate执行滚动查询这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. Oracle 历史SQL执行耗时查询
  2. 如何查询mysql正在执行的进程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

elasticsearch

上一篇:synchronized与ReentrantLock的区别是什么

下一篇:jQuery和JS有什么区别

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》