java es scroll,Elasticsearch Scroll分页检索案例分享
Elasticsearch Scroll分页检索案例分享
1.准备工作
2.定义scroll检索dsl
首先定义一个简单的scroll dsl检索脚本
{
## 这里都是用常量在操作,实际场景中可以参数化变量
"size":1000,
"query": {
"term" : {
"gc.jvmGcOldCount" : 3 ##参数值可以定义为变量,通过参数传递进来
}
}
}
]]>
3.Scroll检索代码
@Test
public void testScroll(){
ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/scroll.xml");
//scroll分页检索,将检索结果映射为Map对象,也可以映射为自定义的实体对象
ESDatas response = clientUtil.searchList("agentstat-*/_search?scroll=1m",
"scrollQuery",//对于dsl脚本名称,在esmapper/scroll.xml文件中配置
Map.class);
List datas = response.getDatas();//第一页数据
List scrollIds = new ArrayList<>();//用于记录每次scroll的scrollid,便于检索完毕后清除
long totalSize = response.getTotalSize();//总记录数
String scrollId = response.getScrollId();//第一次的scrollid
if(scrollId != null)
scrollIds.add(scrollId);
System.out.println("totalSize:"+totalSize);
System.out.println("scrollId:"+scrollId);
if(datas != null && datas.size() > 0) {//每页1000条记录,通过迭代scrollid,遍历scroll分页结果
do {
response = clientUtil.searchScroll("1m",scrollId,Map.class);
scrollId = response.getScrollId();//每页的scrollid
if(scrollId != null)
scrollIds.add(scrollId);
datas = response.getDatas();//每页的纪录数
if(datas == null || datas.size() == 0){
break;
}
} while (true);
}
//查询并打印存在于es服务器上的scroll上下文信息
String scrolls = clientUtil.executeHttp("_nodes/stats/indices/search", ClientUtil.HTTP_GET);
System.out.println(scrolls);
//清除scroll上下文信息,虽然说超过1分钟后,scrollid会自动失效,
//但是手动删除不用的scrollid,是一个好习惯
if(scrollIds.size() > 0) {
scrolls = clientUtil.deleteScrolls(scrollIds);
System.out.println(scrolls);
}
//清理完毕后查看scroll上下文信息
scrolls = clientUtil.executeHttp("_nodes/stats/indices/search", ClientUtil.HTTP_GET);
System.out.println(scrolls);
}
4.Scroll案例项目地址和代码文件
项目地址:
scroll检索对应的代码和脚本文件:
java es scroll,Elasticsearch Scroll分页检索案例分享相关推荐
- Java架构直通车——ElasticSearch深度分页解决方案
文章目录 分页查询 深度分页 深度分页解决方案 分页查询 分页查询是这样的: POST /shop/_doc/_search {"query": {"match_all& ...
- mysql 分页 去重_『备忘录』elasticsearch 去重分页查询
一开始数据结构设计的很复杂,又是父子关系又是嵌套关系,结果发现不能通过简单的查询得到想要的结果:比如一个商店只出现一件符合条件的商品,弄得查询语句就变成这样了 curl -XPOST http://l ...
- elasticsearch scroll 一页最大数据量_elasticsearch 百亿级数据检索案例与原理
一.前言 数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的 实现参考,少走些弯路,在此篇幅中偏重于ES的优化,关于HBase,Hadoop ...
- Elasticsearch:在 Java 客户端中使用 scroll 来遍历搜索结果 - Elastic Stack 8.x
如果你搜索不经常更改的文档,则使用标准查询的分页效果非常好: 否则,使用实时数据执行分页会返回不可预测的结果. 为了绕过这个问题,Elasticsearch 在查询中提供了一个额外的参数:scroll ...
- elasticsearch scroll
elasticsearch scroll 一.背景 最近有个ES 同步的需求,了解了一下子 es的分页处理的方式,本文主要讲解一下es中的scroll的分页的处理,原文链接 https://www.e ...
- 【es】ELASTICSEARCH之自定义JAVA代码的安全策略管理
1.概述 转载:[es]ELASTICSEARCH之自定义JAVA代码的安全策略管理 在我们首次使用intellij直接运行elasticsearch的源代码的时候,我们必然会碰到下边这样一个安全性的 ...
- 京东面试题:ElasticSearch深度分页解决方案
前言 Elasticsearch 是一个实时的分布式搜索与分析引擎,在使用过程中,有一些典型的使用场景,比如分页.遍历等. 在使用关系型数据库中,我们被告知要注意甚至被明确禁止使用深度分页,同理,在 ...
- ElasticSearch 深度分页详解
来源 | OSCHINA 社区 作者 | 京东云开发者-何守优 原文链接:https://my.oschina.net/u/4090830/blog/5593128 1 前言 ElasticSearc ...
- Elasticsearch聚合查询案例分享
为什么80%的码农都做不了架构师?>>> Elasticsearch聚合查询案例分享 1.案例介绍 本文包含三个案例: 案例1:统计特定时间范围内每个应用的总访问量.访问成功数 ...
最新文章
- [CareerCup] 11.2 Sort Anagrams Array 异位词数组排序
- Bootstrap下拉菜单组件
- 关于DPM(Deformable Part Model)算法中模型可视化的解释
- 《系统集成项目管理工程师》必背100个知识点-89行政收尾和合同收尾的区别
- 论文盘点:基于图卷积GNN的多目标跟踪算法解析
- C++STL- 函数对象
- bashrc文件中环境变量配置错误,导致linux命令无法正常使用的解决方案
- linux使用ntp时间同步
- 146. LRU缓存机制
- php 检查类,检查类是否已定义 - PHP 7 中文文档
- maven 相关操作
- [BZOJ2958]序列染色
- java进入dos_java启动dos命令收集笔记一
- java 两个项目 生成唯一id_java方式生成唯一id
- 关于RedisTemplate和StringRedisTemplate
- 互联网晚报 | 06月14日 星期二 | 罗永浩称苹果有些产品明显退步;​旷视首席科学家孙剑博士去世;吉利拟收购魅族...
- 【Endnote X9服务器运行失败】
- xx省联通SUN M5000清除故障灯MBU_B Degraded
- ARM开发工具历史及分类详解 (最详尽的区分和介绍ARM DS-5,RVD...
- 有效防御DDOS的八规则
热门文章
- java键盘控制英雄左右移动_js实现键盘操作实现div的移动或改变的原理及代码
- JAVA操作数据库调试经验
- vim 编辑器 bash文件测试
- mysql 邻接表_图的邻接表存储结构详解
- ireport 怎么使用in查询
- 我眼中的Visual Studio 2010架“.NET研究”构工具
- 我看周马,以及3Q大战背后的社会问题
- Ubuntu18系统安装使用Nginx
- useful websites for constructing your own website
- 如何通过svg代码还原图片_如何通过nginx反向代理来调试代码?