ElasticSearch - 分页查询方式二 【scroll】滚动查询(kibana、Java示例)

Elasticsearch“滚动查询“(Scrolling)的机制的与Java使用ES Client 调用滚动查询 ES在进行普通的查询时,默认只会查询出来10条数据。我们通过设置es中的size可以将最终的查询结果从10增加到10000。如果需要查询数据量大于es的翻页限制或者需要将es的数据进行导出又当如何? Elasticsearch提供了一种称为`"滚动查询"(Scrolling)`的机制,用于处理大型数据集的分页查询。滚动查询允许在持续的时间段内保持一个活动的搜索上下文,然后使用滚动ID进行`迭代`检索结果。滚动查询和关系型数据库中的游标有点类似,因此也叫`游标查询` 阅读详情

前言
1、scroll原理

scroll API可用于从单个搜索请求中检索大量结果(甚至所有结果),其方式与在传统数据库上使用光标的方式大致相同。

第一次查询时,会生产当时查询的快照,后续的查询只要携带上次返回的scroll_id即可 。
2、特点

    可以深查询(甚至全部数据),性能、效率优于from+size方式。
    快照查询,在scroll查询期间 ,外部对索引内的数据进行增删改查等操作不会影响到这个快照的结果。

使用
1、kibana中测试示例

第一次查询 ,并设置上下文scroll_id存活时间为1分钟。

POST book/_search?scroll=1m
{
    "size": 10,
    "query": {
        "match" : {
            "name": "明朝的那些事"
        }
    }
}

响应:

{
    "_scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAD1K-0WdzM3OF9WRVFUcXk3bFNDcjZKZ1pZdw==",
    "took":22,
    "timed_out":false,
    "_shards":{
        "total":1,
        "successful":1,
        "skipped":0,
        "failed":0
    },
    "hits":{
        "total":1302017,
        "max_score":2.5815613,
        "hits":Array[10]
    }
}

后续查询,使用前一个scroll_id即可:

POST _search/scroll
{
  "scroll":"1m",    
 "scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAD1K-0WdzM3OF9WRVFUcXk3bFNDcjZKZ1pZdw=="
 
}

2、Java代码示例

首次调用:

// 构建搜索条件
 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
 ...
 searchSourceBuilder.from(100).size(10);
// 构建请求
SearchRequest searchRequest = new SearchRequest("book");
searchRequest.types("title");
// ===》 关键是多加了这句话
searchRequest.scroll(new Scroll(TimeValue.timeValueMinutes(1)));
searchRequest.source(searchSourceBuilder);
return client.search(searchRequest, RequestOptions.DEFAULT);

后续调用:

// 传入上次返回的scroll_id
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
scrollRequest.scroll(TimeValue.timeValueMinutes(1));
SearchResponse response = client.getRestClient().scroll(scrollRequest, RequestOptions.DEFAULT);
return response;

2025年7月12日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案解析 阅读详情

相关推荐

【文献阅读笔记】之基于注意力机制的深度学习路面裂缝检测

中文,计算机辅助设计与图形学学报,第 32 卷 第 8 期,2020 年 8 月。 DOI: 10.3724/SP.J.1089.2020.18059 摘要: 为实现自动准确地检测路面裂缝, 提升路面裂缝检测效果, 提出了一种基于注意力机制的裂缝检测网络 (attention-based crack networks, ACNet). 该网络采用编码器-解码器网络构架, 编码器采用 ResNet34 为骨干网, 提取路面裂缝特征; 在编码器和解码器间加入基于注意力机制的特征模块(attention-b

qq_44785998的博客 7593

Elsaticsearch-Scroll查询详解

一、Scroll简介 官网地址Scroll scroll查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。 游标查询允许我们 先做查询初始化,然后再批量地拉取结果。 这有点儿像传统数据库中的cursor。 游标查询会取某个时间点的快照数据。 查询初始化之后索引上的任何变化会被它忽略。 它通过保存旧的数据文件来实现这个特性,结果就像保留初始化时的索引视图一样。 深度分页的代价根源是结果集全局排序,如果去掉全局排序的特性的话查询结果的成本...

Felix_阳的博客 9631

黑暗中的爆破(船讯网Ais爬虫暨爬虫实战js逆向学习经验分享)

船讯网 爬虫 js逆向 python

returnadsss的博客 1575

ElasticSearch6.x版本的Scroll滚动查询讲解及Kibana和SpringBoot实操演示

ElasticSearch6.x版本的Scroll滚动查询讲解及Kibana和SpringBoot实操演示

杨杨吖的博客 1888

运动目标成像必学:5分钟搞懂keystone变换原理与避坑指南

本文深入浅出地解析了雷达信号处理中的Keystone变换原理,它是解决运动目标距离徙动问题的关键技术。文章通过直观比喻和简化公式,阐述了该变换如何通过变量代换实现距离与慢时间的解耦合,将倾斜轨迹“掰直”,从而提升成像与检测性能。同时,文中重点指出了实际应用中关于大速度场景、插值误差、多目标处理及高阶运动补偿等关键避坑点,为工程实践提供了宝贵指南。

ios99的博客 403

ENVI5.6+SARscape实战:基于哨兵一号的PS与SBAS时序InSAR地表形变监测全流程解析

本文详细解析了使用ENVI5.6和SARscape软件基于哨兵一号数据进行PS与SBAS时序InSAR地表形变监测的全流程。从数据获取、预处理到PS-InSAR和SBAS-InSAR处理,提供了实用技巧和优化建议,帮助用户高效完成地表形变监测任务。

weixin_29245767的博客 1152

ElasticSearch的scroll滚动查询以及在Springboot中的使用

本文主要讲解es中的scroll滚动查询的使用,同时与深度分页的方式进行了一个比较。最后说明了一下scroll方法在springboot中的使用。如果你恰好需要做一个这方面的需求,不妨来看看~

ming_yeye的博客 6429

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

kngines 1834

ES实战:通过kibana配置滚动索引

ES索引的生命周期管理,即ILM,是如何操作的呢?Kibana中可以直接配置。让我们一起一步步配置出来吧。

LiuLei_2015的博客 2277

【WLAN】【基础知识】WIFI那些事儿之信道和频谱(涵盖2.4G、5G、6G,全网最全)

- 从事WIFI相关开发或测试工作,经常要和信道、频宽、频率等打交道,本文仅将平时涉及的2.4G、5G、6G的信道、频宽、频率等做一总结。 - 一图胜万言,本文汇总了工作中经常用到的频谱图,保证全网最全!!! - 本博客地址,https://blog.youkuaiyun.com/qxhgd,欢迎各位关注,转发请注明出处。

一介草民,只为生活。 1万+

大厂面经:京东大数据面试题及参考答案(3万字长文)

Kafka是一个开源的分布式流处理平台,由 LinkedIn 开发并在 2011 年贡献给 Apache 软件基金会。高吞吐量:能够处理大量的数据流,适合实时数据管道。持久性:数据存储在磁盘上,确保数据不丢失。容错性:通过数据复制提供高可用性。扩展性:支持水平扩展,易于增加更多节点。Kafka 的核心概念Topic:逻辑上的数据流,可以理解为主题。Producer:生产数据的应用程序。Consumer:消费数据的应用程序。Broker:Kafka 集群中的服务器节点。Partition。

大模型大数据攻城狮的专栏 863

ES使用游标查询数据

【代码】ES使用游标查询数据。

若疆~赤云 707

智能解译城市进程:遥感影像建筑物提取研究全景与前沿进展(数据集及代码)

随着全球城市化进程的加速,高效、精准地监测城市建筑物分布对城市规划、灾害评估、人口估算及智慧城市建设具有重要意义。传统的人工测绘方法耗时费力,难以满足大范围、动态更新的需求。而遥感影像建筑物提取技术,借助深度学习与计算机视觉,能够自动化识别并提取建筑物轮廓,极大地提升了城市信息获取的效率和精度。首先,建筑物提取是遥感影像解译的核心任务之一。

hanfeng5268的博客 591

Elasticsearch中进行深分页

Elasticsearch中进行深分页(附源码) 简介 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 如需了解更多请查阅我的例外一篇博客: https://blog.youkuaiyun.com/weixin_43287508/article/details/102802035 常见深度分页方式 from+size ...

weixin_43287508的博客 1228

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot+微信小程序实现图书馆座位预约系统:高并发场景下的架构设计与实战

在现代软件架构中,高并发读写与数据一致性是核心挑战,尤其在涉及资源预约的实时系统中。其基本原理是通过数据库事务、锁机制与缓存策略,确保资源状态在分布式环境下的准确性与一致性。这一技术价值在于能够支撑高流量、强实时的业务场景,提升系统可靠性与用户体验。典型的应用场景包括票务系统、共享资源调度以及在线预约平台。本文以图书馆座位预约系统为例,深入探讨了如何利用Spring Boot、Redis和微信小程序等技术栈,构建一个能够应对瞬时高并发请求的微服务平台。文中详细解析了通过数据库唯一索引与悲观锁防止座位超售、使

weixin_34357436的博客 369

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ElasticSearch中Scroll查詢理解

ElasticSearch超过1W的数据处理

Yuli_li的专栏 1973

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Elasticsearch的滚动查询---Scroll,解决ES每次最多查一万笔数据的问题

接上篇,我们构造各种条件,可以进行各种查询,找到满足我们需求的数据,但是如果数据量大,不知道大家发现一个问题没,那就是你getHits,只能get到一万,一万之后的没办法,那是因为普通的搜索只能支持到这里...... 不懂?那这么讲吧,咱们之前用的搜索,相当于MySQL的limit,这种分页,数据量少的话怎么玩都行,但是如果量大呢,比如我现在十个亿数据,你在ES给我分个页试试,你分页的前提是都查出来,排序,全都怼在内存了,大哥,你内存是多大啊,现在明白为啥之前那种搜索只能取出一万数据了吧 当然了,ES既

未知的希望,是我不灭的信仰 1万+

ElasticSearch 的 from+size、scroll、scroll-scan、sliced scroll-sacn、search after

参考文章: 使用scroll实现Elasticsearch数据遍历和深度分页 Elasticsearch 5.x 源码分析(3)from size, scroll 和 search after ElasticSearch官方文档 Elasticsearch搜索类型讲解 理解“query then fetch”和“dfs query then fetch” 目录 1、ElasticSe...

itakyubi的博客 2415

ElasticSearch - 解决ES的深分页问题 (游标 scroll)

ES为了避免深分页,不允许使用分页(from&size)查询10000条以后的数据,因此如果要查询第10000条以后的数据,要使用ES提供的 scroll(游标) 来查询 假设取的页数较大时(深分页),如请求第20页,Elasticsearch不得不取出所有分片上的第1页到第20页的所有文档,并做排序,最终再取出from后的size条结果作爲最终的返回值 假设你有16个分片,则需要在coordinate node彙总到 shards* (from+size)条记录,即需要16*(20+1..

m0_67391521的博客 1712

Java实现es的scroll滚动查询

public void selectData() throws IOException { int i=1,size=2; SearchRequest searchRequest = new SearchRequest("index"); Scroll scroll = new Scroll(TimeValue.timeValueMinutes(5L)); searchRequest.scroll(scroll); S...

m0_50008952的博客 9102

springboot整合Elasticsearch8.3.1实现scroll滚动查询

ES8.3 scroll

weixin_43857590的博客 1547

es中3种分页的介绍以及对比

由于项目现场涉密,所写代码,只能截图还原;1.初始化客户端2.scroll查询数据2.参考此代码/*** 这种常用于根据筛选条件之后抽取全部数据的场景,* scroll API 可以被用来检索大量的结果, 甚至所有的结果 ,* 注意es的游标查询的是当下时刻的数据快照,* 即在游标查询之后的数据的变动不会影响游标查询的结果,* 默认游标查询根据_doc字段进行排序*//**

健康平安的活着的专栏 1841

快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据(golang)

滚动查询区别于上一篇文章介绍的使用from、size分页检索,最大的特点是,它能够检索超过10000条外的所有文档,可以理解为是一种全量检索的技术方案,也正是因为这种特性,使得滚动查询的代价非常高昂,检索过程消耗大量的内存,所以对于实时检索的场景,滚动查询是不适用的。

liupenglove的专栏 1697

4.Search APIS(二)

1.Search Scroll API搜索滚动API 滚动API可用于从搜索请求中检索大量结果。为了使用滚动,需要按照给定的顺序执行以下步骤。 final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L)); SearchRequest searchRequest = new SearchRequest("posts"); searchRequest.scroll(scroll); SearchSourceBuilder search..

折剑听雨落 738

Elasticsearch scroll 之滚动查询

Elasticsearch 的 Scroll API 是一种用于处理大规模数据集的机制,特别是在需要从索引中检索大量数据时。通常情况下,Elasticsearch 的搜索请求会有一个结果集大小的限制 (from+size 的检索数量默认是 10,000 条记录),而 Scroll API 允许你绕过这个限制,通过滚动的方式逐步获取数据。

m0_38031488的博客 2033

Elasticsearch常用指令(kibana)

所以要在前期考虑好这些参数。以及根据业务,灵活调整数据结构,如果有常用的搜索字段,可以和其他的关系型数据库联合使用,不是非要全都存在es里,否则后期都是坑;由于项目的功能主要是存储和查询,所以选择了es当数据库来用,以下是常用的一些指令,注意es的版本不同会有些指令上的差异。本篇文章使用的版本为7.8。mapping相当于mysql中的字段,创建后无法更改,只能新增,如果一定要更改,只推荐使用索引迁移。term(等于)可以更换为range(范围查询),wildcard(通配符查询),还有其他的,但不常用。

weixin_45291355的博客 2575
上一篇: Elasticsearch 7 : 查询结果只展示部分字段
下一篇: com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘xxx‘:
qq_34412985
博客等级 码龄11年 143粉丝 983原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值