ES 运行机制 与 分页方式

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

1、Query阶段

1、收到用户请求,交由(coordinating node)协调者节点
2、coordinating node 随机选择所有分片/副本(保证所有都覆盖到),发送search request
3、被选中的分片分别执行查询并排序,返回from+size个文档id和排序值
4、coordinating node 整合数据,根据排序值再取from+size的文档id

2、Fetch阶段

1、通过Query阶段拿到文档Id列表,随后去对应的shard上获取文档详情数据
2、coordinating node 向相关分片发送multi_get请求
3、各个分片返回文档详细数据
4、coordinating node拼接结果并返回给客户

ES分页方式
1、From/Size
- from 开始位置
- size 获取总数
GET my_index/_search
{
    "from":1,
    "size":2
}

深度分页: 数据分片情况下如何拿到前1000个文档

  • 获取从990~1000的文档时,会在每个分片上线获取1000个文档,由Coordinating Node聚合所有分片排序去1000个
  • 页越深,处理文档越多,占用内存越多,耗时越长。避免深度分页,es通过index.max_result_window限定最多10000条数据(最多查到钱10000条数据)
2、Scroll

遍历文档集,以快照方式避免深度分页问题

  • 不能实时搜索,因为数据是快照生成
  • 尽量不要使用sort条件,使用_doc最高效
  • 使用稍微复杂
  • 调用过多会占用大量内存

查询方式:
1、发起一个scroll search,(5m是快照有效时间)

    GET my_index/_search?scroll=5m
    {
        "size": 1
    }

2、用第一步返回的_scroll_id

    POST _search/scroll
    {
        "scroll": "5m",
        "scroll_id": "..."    
    }

clear方式:

    DELETE /_search/scroll
    {
        "scroll_id": ".."
    }
或
    DELETE /_search/scroll_all
3、Search_After

避免深度分页性能,提供实时下一页文档获取

  • 确定不能使用from,指定页数
  • 只能下一页,不能上一页
  • 使用简单

方式:
1、正常搜索,必须指定sort值,保证唯一
2、使用上一步最后一个文档的sort值进行查询

request1:
GET test_search_index/_search
{
  "size":1,
  "sort":{
    "age":"desc",
    "_id":"desc"
  }
}

response: 
    {
        "hits":{}...
        "sort":{"28","2"}
    }

使用上一步的结果

request2:
GET test_search_index/_search
{
  "size":1,
  "search_after":[28,"2"],
  "sort":{
    "age":"desc",
    "_id":"desc"
  }
}
走近 ElasticSearch (四)——搜索机制与聚合分析 一、前言 二、ES Search 的运行机制 ES的搜索过程如下: 看起来很简单的图,在我们 ES 集群中进行搜索,其实并没有那么简单。 1. 搜索过程分解 Search 执行的时候实际分两个步骤运作的:查询(Query) 和 获取(Fetch) 查询阶段(Query Phase):在此阶段,协调节点(Coordinating Node)将搜索请求路由到索引(index)中的所有分片(shard... 阅读详情

相关推荐

TNTSearch:基于PHP的高性能全文搜索引擎实战应用

TNTSearch是一款专为PHP生态打造的轻量级全文搜索引擎,其设计初衷是解决中小型项目在无运维支持下对高效检索的需求。它不依赖Java或外部服务(如Elasticsearch),完全基于纯PHP实现索引构建与查询解析,极大降低了部署门槛。]);该代码段展示了TNTSearch最基础的配置加载方式,通过简洁的数组传参即可完成环境初始化,体现出其“零侵入、易集成”的设计哲学。设:- $ \text{tf}(t,d) $:词项 $ t $ 在文档 $ d $ 中出现的频率;

weixin_36074800的博客 972

ElasticSearch 翻页查询

相对于Ealsticsearch的search API, 翻页查询可以将查询结果集分页返回,而不是将所有的结果放在一个page返回。如果查询的结果集包含大量的数据,就可以用到翻页查询(Scroll) API,比如有200K条数据,可以将它们分成20次请求,每次只返回10k条查询结果. 有点类似于数据库里面的游标。要使用翻页查询,需要在search请求中指定一个参数:scroll。这个参数是告诉el

林大虫子的专栏 3348

VisualStudio2022启动报错

把Users\...\AppData\Local\Microsoft\VisualStudio\11.0\ComponentModelCache中的Microsoft.VisualStudio.Default.cache这个文件移除,再重启vs,各项功能都能正常使用了。第一次使用方法1有效果,不知道什么原因后面又报错再删除缓存文件无效了,最后使用方法2启动VS成功。vs2022启动时,报错弹框,在ActivityLog查看具体报错信息,报错原因未知。网上搜索到两种解决方法。方法1:删除缓存文件。

面朝大海,春暖花开 3937

深度分页问题

深度分页 es为了性能,限制了我们分页的深度,es目前支持的最大的 max_result_window = 10000;也就是说我们不能分页到10000条数据以上。 from + size 这种方式不适用于深度分页场景,下面介绍其它两种分页方式: • Search After • Scroll Api from + size的分页方式虽然是最灵活的分页方式,但是当分页深度达到一定程度将会产生深度分页的问题。 scroll 如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询

weixin_38932035的博客 2033

沈阳计算机研究所复试,沈阳计算所复试试题附答案.doc

沈阳计算所复试试题附答案目录数据结构1200612007220085200914操作系统16200616200718200818200919组成原理20200620200720200821200921经典算法22数据结构2006数据结构部分(共25分,第1题10分,第2题15分)在(下图)所示的有向图中:v1 v2v4 ...

weixin_42511053的博客 861

FPGA篮球计分器:从需求分析到模块化实现的实战指南

本文详细介绍了FPGA篮球计分器的设计与实现,涵盖需求分析、模块化设计及实战调试。重点解析了24秒精确倒计时、12分钟比赛计时、比分统计和数码管显示等核心模块的Verilog实现,提供了按键消抖、状态机设计和BCD码处理等关键技术细节,帮助开发者掌握FPGA数字系统设计方法。

sql99的博客 218

es滚动查询分析和使用步骤

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

MyHeaven7的博客 1965

云模型在综合评价过程中的应用

目录 1 云模型标尺(标准云模型)的构建方法 1.1 通过正态云的“3En 规则”来表示评价论域 1.2 通过论域的边界值隶属度相等来表示评价论域 1.3 通过黄金分割法来表示评价论域 2 确定评价结果的过程 2.1 基本云发生器 2.2 X条件云发生器 2.3 两种方法的区别 综合评价问题一般分为以下六个步骤 1、明确评价目的; 2、确定被评价对象; 3、建立评价指标体系(包括收集评价指标的原始值、评价指标的若干预处理等); 4、确立与各项评价指标相对应的权重系数; 5、选..

weixin_62223576的博客 1万+

ES - 滚动查询(scroll)

Elasticsearch-scroll滚动查询适合那种需要一次性或分批拉出大量数据做离线处理、迁移等。比起from、size分页查询可以提升点效率。不过不要再前端分页实时查询的时候使用哦!

莫莫绵的博客 2万+

第78篇:AI辅助创意与设计工作流——Logo、海报、UI的自动化生成与迭代(操作教程)

在广告公司和设计团队摸爬滚打几年,我见过太多设计师为一个Logo的配色、一张海报的版式反复修改到深夜。自从AI绘画工具爆发,我就一直在琢磨,怎么把这些“黑科技”真正塞进设计师的日常流水线里,而不是让它们仅仅是个玩具。今天要聊的,就是一套我实践下来,能真正提升效率的AI辅助创意与设计工作流。我们不谈颠覆,只谈增效——如何用AI快速完成Logo、海报、UI的灵感生成、批量出图与智能迭代,把设计师从重复劳动中解放出来,聚焦在真正的创意决策上。

weixin_37464284的博客 537

5大步骤!轻松玩转Dorisoy.Rigger:基于.NET Core 6、MAUI和Blazor的多数据库开发框架生成器

各位小伙伴,你们是否厌倦了每次项目启动都要从头配置数据库连接、编写重复的代码?今天,我们就来聊聊如何使用Dorisoy.Rigger这个强大的开发框架生成器,让你的.NET Core 6、MAUI和Blazor项目开发变得简单又高效!准备好迎接开发的新乐趣了吗?让我们一起开始吧!接下来,我们需要定义数据模型。假设我们有一个简单的用户表,包含ID、用户名和密码字段。在项目中创建一个新的类文件,命名为User.csset;set;set;这段代码定义了一个用户模型,其中包含了用户的ID、用户名和密码。

java专栏 1738

7.2 ElasticSearch运行机制之分页与遍历

1.简介 elasticsearch提供了如下三种方式来解决分页与遍历问题,分别是from/size、scroll以及search_after。 2.from/size (1).query 查询job字段为"Java engineer"的文档,从第2个位置开始,展示2条。 POST /employee/_search { "query": { "match": { "job": "Java engineer" } }, "from": 1, "size": 2

Steven的博客 799

PCL点云库入门(第1讲)——PCL库简介和安装(Win10/11+VS2019+PCL 1.12.0)

PCL,全称为,即点云库,是一个专注于2D/3D图像和点云处理的大型开源项目。该项目最初由斯坦福大学的杰出计算机视觉专家Radu博士及其团队开发和维护,经过十余年的发展,目前(2024年12月)已更新至1.14.1版本。PCL点云库集成了众多尖端的点云处理算法,这些算法不仅包括基础的滤波、特征估计、表面重建、配准、模型拟合和分割等,还涵盖了更高级的功能,如点云数据的语义理解、场景解析以及动态环境下的实时处理。这些算法能够对含有噪声的点云数据进行有效过滤,去除异常值;

qq_36812406的博客 1万+

Elasticsearch 6.x版本全文检索学习之Search的运行机制

红色截图来源自慕课网,尊重版权,从你我做起,谢谢。 1、Elasticsearch之深入了解Search的运行机制。   答:Search的运行机制,Search执行的时候实际分两个步骤运作的,分别是Query阶段、Fetch阶段。称为Query-Then-Fetch。 2、Search的运行机制,相关性算分问题。   答...

HiterCoder 224

CMCC-IPC-A410串口刷机救砖教程

《CMCC-IPC-A410摄像头串口刷机指南》摘要 本指南针对2018年前老款CMCC-IPC-A410摄像头变砖/升级失败的情况,提供串口刷机方案。需准备CH340G串口模块、杜邦线、海康V5.5.82固件等工具。操作包含硬件连接(TX/RX交叉接线)、115200波特率终端配置、CTRL+U进入刷机模式,通过UPF格式化、tftp传输固件、update写入等步骤完成修复。刷机后设备恢复未激活状态,需重置密码,原定制功能可能失效。整个过程需稳定供电,耗时约15-20分钟,注意此操作将使原厂保修失效。(1

海康威视技术支持 1843

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

6 Elasticsearch 篇之深入了解 Search 的运行机制

文章目录Query-Then-FetchSearch的运行机制-Query阶段Search的运行机制-Fetch阶段Search的运行机制-相关性算分问题sorting-doc-values-fielddataFileddata vs DocValuesdocvalue_fields分页与遍历-fromsize分页与遍历-scroll分页与遍历-search_after Query-Then-Fe...

李玉坤的博客 678

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ElasticSearch学习(七)-Search运行机制

Search Search执行的时候实际上是分为两个步骤运作的:Query 和 Fetch。 Query阶段 Fetch 排序 es默认采用相关性算分排序,用户可以通过设定sorting参数来自行设定排序规则。 GET book/_search { "query": { "bool": { "must": [ { "match": {...

hxyascx的博客 202

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Elasticsearch 常见面试题

Elasticsearch 常见面试题摘要: Elasticsearch是一个基于Lucene的分布式搜索分析引擎,核心特性包括倒排索引、近实时搜索和分布式架构。其核心概念包括集群、节点、索引和文档,支持text与keyword两种字符串类型,分别用于全文搜索和精确匹配。ES通过DocValues优化排序聚合,利用分词过滤提升查询效率。底层采用不可变的分段存储机制,结合refresh、flush和merge操作平衡性能与一致性。相比MySQL,ES专为搜索设计,支持水平扩展,但不提供ACID事务。高性能源于

King 学而不思则罔 2100

Elastic Stack学习笔记6-Search 的运行机制

Query阶段Fetch阶段合并起来称为query-then-fetch。

ilwoziji的博客 173

ELK合集(十二):Elasticsearch关键术语之分布式搜索 持续更新

分布式搜索 分布式搜索的运行机制 第一阶段 Query 例如 3个节点的es集群有3个主分片 1个副本 节点收到请求后 会以coordinating node的身份 在6个主副分片中随机选择3个分片 发送查询请求 被选中的分片执行查询 进行排序 然后每个分片都会返回from+size个排序后的文档id和排序值 给coordinating节点 第二阶段 Fetch coordinating n...

专注大数据与自由 259

Elasticsearch核心技术与实战学习笔记 41 | 剖析分布式查询及相关性算分

一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。 二分布式搜索的运行机制 ES 的搜索,会分两阶段进行 第一阶段 - QUERY 第二阶段 - Fetch Query - then - Fetch 2.1Query 阶段 用户发出搜索请求到 ES 节点。节点收到请求后,会以 Coordinating 节点的身份,在 6 个主副分片中随机选择 3 个分片,发送查询请求 被选中的分片执行查询,进行排序。然后,每个分片都会返回 From + S...

bohu83的博客 443

Elasticsearch-21.文档分布式存储和分片及其生命周期和剖析分布式查询及相关性评分

Elasticsearch 文档分布式存储 文档存储在分片上 文档会存储在具体的某个主分片和副本分片上:例如文档1,会存储在PO和RO分片.上 文档到分片的映射算法 确保文档能均匀分布在所用分片.上,充分利用硬件资源,避免部分机器空闲,部分机器繁忙 潜在的算法 随机/ Round Robin。当查询文档1,分片数很多,需要多次查询才可能查到文档1 维护文档到分片的映射关系,当文档数据:量大的时候,维护成本高 实时计算,通过文档1,自动算出,需要去那个分片.上获取文档 文档到

飘然渡沧海的博客 395

Elasticsearch 剖析分布式查询及相关性算法

文章目录1. 分布式搜索的运行机制2. Query 阶段3. Fetch 阶段4. Query Then Fetch 潜在的问题5. 解决算分不准的方法6. 相关性算分问题 DEMO 1. 分布式搜索的运行机制 ES 的搜索,会分两阶段进行 第一阶段 - QUERY 第二阶段 - Fetch Query - then - Fetch 2. Query 阶段 用户发出搜索请求到 ES 节点。节点收到请求后,会以 Coordinating 节点的身份,在 6 个主副分片中随机选择 3个分片,发送查询请求

爱死亡机器人 577

Knative hack 工具库全解:用 presubmit-tests.sh、e2e-tests.sh、performance-tests.sh 与 release.sh 搭建标准 CI/CD 流程

`knative.dev/hack` 是 Knative 各组件仓库共享的 Shell 脚本集合,用于统一引导 Prow/GitHub Actions 等 CI 流程与发布流程的入口逻辑。本指南以 [vendor/knative.dev/hack/README.md](https://link.gitcode.com/i/c5ddb0a003f5c37d3f6fe6e62046f586) 为骨架,

gitblog_00149的博客 657

ssm练手(CRUD) 3、利用pagehelper分页,并进行测试

如题,本篇进行分页测试1)准备1.1 maven引入所需的jar包(此处我一开就已经引入了,如图) 1.2)service层 在service层下创建class,代码如下 package com.atguigu.crud.service;import java.util.List;import org.springframework.beans.factory.annotation.Autow

zyf的博客 1494

ElasticSearch系列之分布式特性及分布式搜索机制(三)

【代码】14.ElasticSearch系列之分布式特性及分布式搜索机制(三)

算法小生 533
上一篇: 秒杀系统总结与思考(四) 流量削峰
下一篇: 从kafka说起零拷贝机制的运用
Kindle_code
博客等级 码龄12年 21粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值