ES深分页
一、背景
1.ES默认分页from+size
2.在大数据量和深度分页的时候,效率非常低
二、效率低原因
1.例如要查第501页的10条数据,from为5000,size为10
2.ES会查询并排序5010条数据,即处理了from+size条数据
3.ES为了性能,限制了分页数量,最大为1万,max_result_window = 10000,因此不能分页到1万条数据以上
4.对于1万条以上的数据查询,ES直接返回查询失败
三、改进
1.方式一、scroll滚动搜索
a.在第一次搜索的时候,保存一个视图快照,之后基于视图快照提供数据
b.无法查询到实时数据
c.查询语句,要指定scroll参数,值为时间窗口,例如scroll=5m
d.第一次查询会返回scroll_id,之后的查询要带着scroll_id参数
2.方式二、search_after
a.ES5之后提供search_after,是假分页方式,根据上一页的最后一条,确定下一页的位置
b.可以查询到实时数据
c.类似于瀑布流式的分页查询
参考:
https://www.cnblogs.com/hello-shf/p/11543453.html
ES深分页的更多相关文章
- ES scroll(ES游标) 解决深分页
ES scroll(ES游标) 解决深分页. Why 当Elasticsearch响应请求时,它必须确定docs的顺序,排列响应结果.如果请求的页数较少(假设每页20个docs), Elasticse ...
- ElasticSearch - 解决ES的深分页问题 (游标 scroll)
https://www.jianshu.com/p/f4d322415d29 1.简介 ES为了避免深分页,不允许使用分页(from&size)查询10000条以后的数据,因此如果要查询第10 ...
- Elasticsearch由浅入深(七)搜索引擎:_search含义、_multi-index搜索模式、分页搜索以及深分页性能问题、query string search语法以及_all metadata原理
_search含义 _search查询返回结果数据含义分析 GET _search { , "timed_out": false, "_shards": { , ...
- es之分页
导入测试数据: POST /_bulk{ "create": { "_index": "us", "_type": &q ...
- MySQL 千万数据库深分页查询优化,拒绝线上故障!
文章首发在公众号(龙台的技术笔记),之后同步到博客园和个人网站:xiaomage.info 优化项目代码过程中发现一个千万级数据深分页问题,缘由是这样的 库里有一张耗材 MCS_PROD 表,通过同步 ...
- Elasticsearch from/size-浅分页查询-深分页 scroll-深分页search_after深度查询区别使用及应用场景
Elasticsearch调研深度查询 1.from/size 浅分页查询 一般的分页需求我们可以使用from和size的方式实现,但是这种的分页方式在深分页的场景下应该是避免使用的.深分页的页次增加 ...
- 【分页问题】elasticsearch 深分页问题以及解决方法
本文主要参考: 1.https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html ...
- solr深分页,游标操作分页,解决性能问题
solr深分页,游标操作分页,解决性能问题 @Test public void pageByCursor() { try { solrServer.connect(); String query = ...
- 深分页(Deep Pagination)
取回阶段 | Elasticsearch: 权威指南 | Elastic https://www.elastic.co/guide/cn/elasticsearch/guide/current/_fe ...
- 查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题
开发经常遇到分页查询的需求,但是当翻页过多的时候,就会产生深分页,导致查询效率急剧下降. 有没有什么办法,能解决深分页的问题呢? 本文总结了三种优化方案,查询效率直接提升10倍,一起学习一下. 1. ...
随机推荐
- Mbps 与 MBps
bps 是速率单位,表示比特每秒(bit per second),单位也可以是 bit/s.1K = 103 bit/s:1M = 106 bit/s.Mbps 中的b不是字节 Byte,而是比特 b ...
- LeetCode-825 适龄的朋友
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/friends-of-appropriate-ages 题目描述 在社交媒体网站上有 n 个用户. ...
- oracle 设置用户永不过期
一.查看用户的proifle是哪个,一般是default SELECT username,PROFILE FROM dba_users; 二.查看指定概要文件(如default)的密码有效期 SELE ...
- MySQL 8.0 新特性-原子DDL
背景 MySQL 8.0 原子DDL 是一个复杂的过程,涉及比较多的模块,例如:MDL 锁,表定义缓存,行格式,Row Log,DDL Log,online 属性,表空间物理文件操作等.本文主要通过与 ...
- fabric学习笔记5
fabric学习笔记5 20201303张奕博 2023.1.15 fabric中的docker命令 1.查看本机的镜像列表 docker images 2.拉取镜像 docker pull hype ...
- Loaded plugins: fastestmirror, langpacks You need to be root to perform this command.
- 了解ASP(二)
变量 ASP中的变量有普通变量,Session变量,Application变量. 变量的生存期 在子程序外声明的变量可被 ASP 文件中的任何脚本访问和修改. 在子程序中声明的变量只有当子程序每次执行 ...
- Kotlin初学习
Java和Kotlin数据类型对照表
- JS 时间的获取和比较
JS获取时间 获取当前时间 var date = new Date(); 可指定某种格式来获取时间,或者将字符串转换成时间 var date = new Date("2019-09-24 T ...
- java 导入Excel数据校验判断哪行那列
记录工作 需求是导入数据的时候需要判断哪一行是空行,或者哪一行超过限制字符,然后返回给前端做展示 @PostMapping("/importExcel") @ApiOperatio ...