ES中提供了 FROM/SIZE 分页,但这种分页有性能瓶颈。

Scroll会以间隔时间滚屏的方式返回全部的查询数据,可以作为数据量很大的情况下,分页的一个替代方案

完整的示例如下:

public void scroll(){RestHighLevelClient client = elasticClient.getRestHighLevelClient();//初始化scrollfinal Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L)); //设定滚动时间间隔SearchRequest searchRequest = new SearchRequest();searchRequest.scroll(scroll);SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(matchAllQuery());searchSourceBuilder.size(5); //设定每次返回多少条数据
        searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = null;try {searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);} catch (IOException e) {e.printStackTrace();}String scrollId = searchResponse.getScrollId();SearchHit[] searchHits = searchResponse.getHits().getHits();System.out.println("-----首页-----");for (SearchHit searchHit : searchHits) {System.out.println(searchHit.getSourceAsString());}//遍历搜索命中的数据,直到没有数据while (searchHits != null && searchHits.length > 0) {SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);scrollRequest.scroll(scroll);try {searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);} catch (IOException e) {e.printStackTrace();}scrollId = searchResponse.getScrollId();searchHits = searchResponse.getHits().getHits();if (searchHits != null && searchHits.length > 0) {System.out.println("-----下一页-----");for (SearchHit searchHit : searchHits) {System.out.println(searchHit.getSourceAsString());}}}//清除滚屏ClearScrollRequest clearScrollRequest = new ClearScrollRequest();clearScrollRequest.addScrollId(scrollId);//也可以选择setScrollIds()将多个scrollId一起使用ClearScrollResponse clearScrollResponse = null;try {clearScrollResponse = client.clearScroll(clearScrollRequest,RequestOptions.DEFAULT);} catch (IOException e) {e.printStackTrace();}boolean succeeded = clearScrollResponse.isSucceeded();System.out.println("succeeded:" + succeeded);}

转载于:https://www.cnblogs.com/chentop/p/10296517.html

ElasticSearch High Level REST API【3】Scroll 滚屏相关推荐

  1. lua游戏开发实践指南光盘_Godot游戏开发实践之一:用High Level Multiplayer API制作多人游戏(上)

    一.前言 距离上一次发文已经稳稳超过一年了,去年一直在做 #¥@#*!%--%#&-%&^# 然后待在家里了!偶尔写写 BUG ,一直默默关注着 Godot ,这不已经 3.2.2 版 ...

  2. ElasticSearch入门-搜索(java api)

    ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.J ...

  3. echart 时间滚动_基于 ECharts 封装甘特图并实现自动滚屏

    项目中需要用到甘特图组件,之前的图表一直基于 EChart 开发,但 EChart 本身没有甘特图组件,需要自行封装 经过一番鏖战,终于完成了... 我在工程中参考 v-chart 封装了一套图表组件 ...

  4. 滚屏加载--无刷新动态加载数据技术的应用

    我们浏览有些网页的时候,当拉动浏览器的滚动条时到页底时,页面会继续自动加载更多内容供用户浏览.这种技术我暂且称它为滚屏加载技术.我们发现很多网站用到这种技术,必应图片搜索.新浪微博.QQ空间等将该技术 ...

  5. html自动滚屏效果,jQuery实现公告新闻自动滚屏效果实例代码

    本文是小编参考网络上的一个小demo,自己做了下扩展,原来是向上滚动的,扩展了一个向下滚动的方法,具体实例代码如下所示: 滚屏实验 ul,li{margin:0;padding:0} #scrollD ...

  6. 3个要点,教你设计好无限滚屏

    说明:喜欢翻译国外交互设计体验设计网站优秀文章案例,仅供互相学习探讨,翻译有版权,如有错误,请多指正~ 前言 随着社交网络的流行,无限滚屏刷新feed流成为探索更多内容的一种必要的交互方式,如同Fli ...

  7. java 采集上下滚屏_关于java游戏滚屏的问题!(如何实现)!

    在J2ME的高级的图形用户界面API中并没有提供类似滚屏的效果,因此我们需要自己通过Canvas类来实现,我们应该在Canvas类的paint()的方法中绘制我们要滚动的文字,基本代码如下所示: PR ...

  8. QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)

    作为新手小白的一些分享....... 其中一部分功能要求显示多张图片,如果图片总高度超过工具窗口的高度就要有滚动条出现,实现滚屏的效果,网上这部分内容少之又少,我就把效果和代码都贴出来供大家参考. 想 ...

  9. 【IDEA】IDEA快速滚屏几种操作方式和快捷键设置方法

    IDEA没有默认支持按住快速进行代码滚屏,如果一个文件包含3000行代码,我希望快速翻到大约2000行左右,有以下这么几种常见的操作方式. 常见快速滚屏操作方式: 1.最傻的方式:鼠标滚轮一直滚 问题 ...

  10. 用HyperSnap实现滚屏抓取多屏网页

    用HyperSnap实现滚屏抓取多屏网页 你完全不必耐心的看完所有内容,这里想说明的无非是以下2点: 1. 滚屏内容抓取:在HyperSnap的Active Window(ctrl+shift+w)抓 ...

最新文章

  1. nginx 的proxy_cache才是王道
  2. 安装仅限于用于sharepoint_PDF DC2018软件安装教程
  3. node本地连接服务器的数据库_基于Node.jsORM框架Sequelize的数据库迁移一
  4. [前端]多线程在前端的应用——Javascript的线程
  5. uban系统如何安装java_Ubuntu系统下安装Java并配置环境
  6. 跳石头(最小最大问题)
  7. android edittext获取 time值,在Android EditText中实现日期时间选择器(DatePicker和TimePicker)...
  8. Nginx负载均衡,ssl原理,生成ssl密钥对,Nginx配置ssl
  9. 从JimmyNews有感于互联网的传播能力
  10. python构造函数
  11. 手把手教你配置阿里云服务器搭建网站
  12. ViewBinding使用详解
  13. flutter 屏幕截图,超出屏幕部分截图
  14. 随机密聊 匿名聊天室程序源码
  15. HTML实现图片360度循环旋转
  16. Qt编写的项目作品11-带频谱的音乐播放器
  17. Kubernetes 学习总结(25)—— Kubernetes 中的 pod 与容器的区别和联系
  18. 使用Android Studio做一个简易进制转换计算器
  19. 中文网页设计分享之《banner设计篇》
  20. Java面向对象之子类方法重写

热门文章

  1. S19王者荣耀服务器维护,王者荣耀:S19新赛季更新,她没上线惨遭重做,英雄调整,界面优化...
  2. cactiez mysql_cactiez v11添加对mysql数据库、apache系统进行监控
  3. mysql 5.7.9 winx64_Windows 7 安装配置 mysql-5.7.17-winx64 方法-Fun言
  4. 下载centos(阿里云)
  5. 浏览器对象模型(Browser Object Model)
  6. 牛客NOIP提高组(三)题解
  7. SpringBoot + MyBaties 实现其XML方式
  8. 前端软件sublime的一些常用快捷键
  9. C语言中的++和--
  10. codeforces 597C (树状数组+DP)