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分页检索案例分享相关推荐

  1. Java架构直通车——ElasticSearch深度分页解决方案

    文章目录 分页查询 深度分页 深度分页解决方案 分页查询 分页查询是这样的: POST /shop/_doc/_search {"query": {"match_all& ...

  2. mysql 分页 去重_『备忘录』elasticsearch 去重分页查询

    一开始数据结构设计的很复杂,又是父子关系又是嵌套关系,结果发现不能通过简单的查询得到想要的结果:比如一个商店只出现一件符合条件的商品,弄得查询语句就变成这样了 curl -XPOST http://l ...

  3. elasticsearch scroll 一页最大数据量_elasticsearch 百亿级数据检索案例与原理

    一.前言 数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的 实现参考,少走些弯路,在此篇幅中偏重于ES的优化,关于HBase,Hadoop ...

  4. Elasticsearch:在 Java 客户端中使用 scroll 来遍历搜索结果 - Elastic Stack 8.x

    如果你搜索不经常更改的文档,则使用标准查询的分页效果非常好: 否则,使用实时数据执行分页会返回不可预测的结果. 为了绕过这个问题,Elasticsearch 在查询中提供了一个额外的参数:scroll ...

  5. elasticsearch scroll

    elasticsearch scroll 一.背景 最近有个ES 同步的需求,了解了一下子 es的分页处理的方式,本文主要讲解一下es中的scroll的分页的处理,原文链接 https://www.e ...

  6. 【es】ELASTICSEARCH之自定义JAVA代码的安全策略管理

    1.概述 转载:[es]ELASTICSEARCH之自定义JAVA代码的安全策略管理 在我们首次使用intellij直接运行elasticsearch的源代码的时候,我们必然会碰到下边这样一个安全性的 ...

  7. 京东面试题:ElasticSearch深度分页解决方案

    前言 Elasticsearch 是一个实时的分布式搜索与分析引擎,在使用过程中,有一些典型的使用场景,比如分页.遍历等. 在使用关系型数据库中,我们被告知要注意甚至被明确禁止使用深度分页,同理,在 ...

  8. ElasticSearch 深度分页详解

    来源 | OSCHINA 社区 作者 | 京东云开发者-何守优 原文链接:https://my.oschina.net/u/4090830/blog/5593128 1 前言 ElasticSearc ...

  9. Elasticsearch聚合查询案例分享

    为什么80%的码农都做不了架构师?>>>    Elasticsearch聚合查询案例分享 1.案例介绍 本文包含三个案例: 案例1:统计特定时间范围内每个应用的总访问量.访问成功数 ...

最新文章

  1. [CareerCup] 11.2 Sort Anagrams Array 异位词数组排序
  2. Bootstrap下拉菜单组件
  3. 关于DPM(Deformable Part Model)算法中模型可视化的解释
  4. 《系统集成项目管理工程师》必背100个知识点-89行政收尾和合同收尾的区别
  5. 论文盘点:基于图卷积GNN的多目标跟踪算法解析
  6. C++STL- 函数对象
  7. bashrc文件中环境变量配置错误,导致linux命令无法正常使用的解决方案
  8. linux使用ntp时间同步
  9. 146. LRU缓存机制
  10. php 检查类,检查类是否已定义 - PHP 7 中文文档
  11. maven 相关操作
  12. [BZOJ2958]序列染色
  13. java进入dos_java启动dos命令收集笔记一
  14. java 两个项目 生成唯一id_java方式生成唯一id
  15. 关于RedisTemplate和StringRedisTemplate
  16. 互联网晚报 | 06月14日 星期二 | 罗永浩称苹果有些产品明显退步;​旷视首席科学家孙剑博士去世;吉利拟收购魅族...
  17. 【Endnote X9服务器运行失败】
  18. xx省联通SUN M5000清除故障灯MBU_B Degraded
  19. ARM开发工具历史及分类详解 (最详尽的区分和介绍ARM DS-5,RVD...
  20. 有效防御DDOS的八规则

热门文章

  1. java键盘控制英雄左右移动_js实现键盘操作实现div的移动或改变的原理及代码
  2. JAVA操作数据库调试经验
  3. vim 编辑器 bash文件测试
  4. mysql 邻接表_图的邻接表存储结构详解
  5. ireport 怎么使用in查询
  6. 我眼中的Visual Studio 2010架“.NET研究”构工具
  7. 我看周马,以及3Q大战背后的社会问题
  8. Ubuntu18系统安装使用Nginx
  9. useful websites for constructing your own website
  10. 如何通过svg代码还原图片_如何通过nginx反向代理来调试代码?