ElasticSearch高级用法之滚动查询

由于es的限制,普通查询最多查询10000条数据,那么需要查询数据量大的情况怎么办呢?这个时候就可以使用滚动查询。代码如下:

//设置查询超时时间
Scroll scroll = new Scroll(TimeValue.timeValueMillis(5L));
//滚动查询
searchRequest.scroll(scroll);
//记录要滚动的id
String scrollId = searchResponse.getScrollId();
//滚动查询部分,将从第1001笔数据开始取
SearchHit[] hitsScroll = hits.getHits();
while (hitsScroll != null && hitsScroll.length > 0) {
//构造滚动查询条件
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
scrollRequest.scroll(scroll);
try {
searchResponse = client.restHighLevelClient().scroll(scrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
scrollId = searchResponse.getScrollId();
System.out.println(scrollId);
hits = searchResponse.getHits();
hitsScroll = hits.getHits();
//对结果进行操作
for (SearchHit hit : hits) {
CntdDataDeliver cntdDataDeliver=JSON.parseObject(hit.getSourceAsString(), CntdDataDeliver.class);
list.add(cntdDataDeliver);
}
}
//清除滚动
ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.addScrollId(scrollId);
try {
client.restHighLevelClient().clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
posted @   johnson8888  阅读(1262)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示