一、背景

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深分页的更多相关文章

  1. ES scroll(ES游标) 解决深分页

    ES scroll(ES游标) 解决深分页. Why 当Elasticsearch响应请求时,它必须确定docs的顺序,排列响应结果.如果请求的页数较少(假设每页20个docs), Elasticse ...

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

    https://www.jianshu.com/p/f4d322415d29 1.简介 ES为了避免深分页,不允许使用分页(from&size)查询10000条以后的数据,因此如果要查询第10 ...

  3. Elasticsearch由浅入深(七)搜索引擎:_search含义、_multi-index搜索模式、分页搜索以及深分页性能问题、query string search语法以及_all metadata原理

    _search含义 _search查询返回结果数据含义分析 GET _search { , "timed_out": false, "_shards": { , ...

  4. es之分页

    导入测试数据: POST /_bulk{ "create": { "_index": "us", "_type": &q ...

  5. MySQL 千万数据库深分页查询优化,拒绝线上故障!

    文章首发在公众号(龙台的技术笔记),之后同步到博客园和个人网站:xiaomage.info 优化项目代码过程中发现一个千万级数据深分页问题,缘由是这样的 库里有一张耗材 MCS_PROD 表,通过同步 ...

  6. Elasticsearch from/size-浅分页查询-深分页 scroll-深分页search_after深度查询区别使用及应用场景

    Elasticsearch调研深度查询 1.from/size 浅分页查询 一般的分页需求我们可以使用from和size的方式实现,但是这种的分页方式在深分页的场景下应该是避免使用的.深分页的页次增加 ...

  7. 【分页问题】elasticsearch 深分页问题以及解决方法

    本文主要参考: 1.https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html ...

  8. solr深分页,游标操作分页,解决性能问题

    solr深分页,游标操作分页,解决性能问题 @Test public void pageByCursor() { try { solrServer.connect(); String query = ...

  9. 深分页(Deep Pagination)

    取回阶段 | Elasticsearch: 权威指南 | Elastic https://www.elastic.co/guide/cn/elasticsearch/guide/current/_fe ...

  10. 查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题

    开发经常遇到分页查询的需求,但是当翻页过多的时候,就会产生深分页,导致查询效率急剧下降. 有没有什么办法,能解决深分页的问题呢? 本文总结了三种优化方案,查询效率直接提升10倍,一起学习一下. 1. ...

随机推荐

  1. Lambda表达式和Collection集合

    Lambda表达式 Lambda表达式理解 Lambda表达式是Jdk 8 开始新增的一种语法形式:作用:用于简化匿名内部类的代码写法 注意:Lambda表达式只能简化函数式接口的匿名内部类!!! 什 ...

  2. 微信轰炸Python脚本

    1 import time 2 3 from pynput.keyboard import Key,Controller 4 5 keyboard = Controller() 6 7 a = inp ...

  3. Python实现图片重命名——实用

    1 # encoding: utf-8 2 import os 3 import sys 4 5 import openpyxl 6 import tkinter as tk 7 from tkint ...

  4. shiyansi

    #include <stdio.h> #include <stdlib.h> #define N 1000 int fun(int n,int m,int bb[N]) { i ...

  5. [转载]Net分布式系统之四:RabbitMQ消息队列应用

    消息通信组件Net分布式系统的核心中间件之一,应用与系统高并发,各个组件之间解耦的依赖的场景.本框架采用消息队列中间件主要应用于两方面:一是解决部分高并发的业务处理:二是通过消息队列传输系统日志.目前 ...

  6. 对象可能是类数组对象 不具备数组的原型内的方法 所以可以用call或者apply把this指向改成数组或对象原型

    const arr = [] 2Object.prototype.toString.call(arr) === '[object Array]' // true 3 4 const obj = {} ...

  7. wpa_supplicant 交叉编译

    交叉编译 wpa_supplicant 指定交叉编译环境: CC=arm-linux-xxxxx-gcc 运行错误 :  wlan0: Unsupported driver 'nl80211' 在.c ...

  8. 杭电oj 偶数求和

    Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值 ...

  9. CentOS7 搭建 PXE 安装系统

    1. PXE介绍 2. 服务的搭建 2.1 DHCP服务搭建 2.1.1 安装DHCP软件包 2.1.2 修改dhcp配置文件 2.1.3 开启DHCP服务 2.1.4 查看dhcp服务是否开启 2. ...

  10. python官方文档:https://pypi.org/

    https://pypi.org/ Find, install and publish Python packages with the Python Package Index