1、es分页语法
GET /_search?from=起始数&size=页面显示条数
例如:GET /test_index/test_type/_search?from=0&size=3

2、deep paging
什么是deep paging?简单来说,就是搜索的特别深,比如总共有60000条数据,有3个shard上平分了这些数据,每个shard上有20000条数据。要求每页显示10条数据,这个时候你要搜索到第1000页,实际上要拿到的是10001~10010的数据。我们可以思考一下每个shard上的数据是怎么返回的?
每个shard都返回10001~10010条的数据,这样理解是错误的!!!
原理:
你的请求首先可能是打到一个不包含这个index的shard的node上去,这个node就是一个coordinate node,那么这个coordinate note就会将搜索请求转发到这个index的三个shard所在的node上去。
就上面的例子中,实际上每个shard都要将内部的20000条数据中的第10001~10010条数据拿出来,不是10条,是10010条数据。3个shard,每个shard都返回10010条数据给coordinate node,coordinate node会收到总共30030条数据,然后在这些数据中按照_score(相关度分数)进行排序,会在其中取到自己需要的第1000页的数据,然后将这10条数返回给客户端。

搜索的过深的时候,就需要在coordinate node上保存大量的数据,还要进行大量数据的排序,排序之后,再取出对应的那一页数据。这个过程,既耗费网络带宽,耗费内存,还耗费CPU。所以deep paging存在性能的问题,我们应该尽量避免出现这个deep paging操作。

es分页搜索的更多相关文章

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

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

  2. #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

    郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...

  3. 【extjs】 ext5 Ext.grid.Panel 分页,搜索

    带有分页,搜索的grid. <%@page language="java" contentType="text/html; charset=UTF-8" ...

  4. ElasticSearch 学习记录之ES高亮搜索

    高亮搜索 ES 通过在查询的时候可以在查询之后的字段数据加上html 标签字段,使文档在在web 界面上显示的时候是由颜色或者字体格式的 GET /product/_search { "si ...

  5. ElasticSearch(十五) _search api 分页搜索及deep paging性能问题

    1.分页搜索 语法: size,from GET /_search?size=10 GET /_search?size=10&from=0 GET /_search?size=10&f ...

  6. Es学习第六课, ES基本搜索_search

    前面几课ES的基本概念.安装和分词都讲过了,下面我们就来实战一下ES的核心功能-搜索,这节课我们主要讲的是基本搜索 _search(注意:ES的关键字都要加前缀_,所以我们在定义索引.类型名称时不要带 ...

  7. es分页条数限制

    "error": { "root_cause": [ { "type": "query_phase_execution_excep ...

  8. DataTables ajax + bootstrap 分页/搜索/排序/常见问题

    最近学校的网站建设需要,尝试使用了下Jquery dataTables控件,接触过C#的人都知道,C#中也含有一个DataTable,但它和我们今天讨论的东西无关 我使用的是官网最新的DataTabl ...

  9. thinkphp 使用paginate分页搜索带参数

    最近做项目发现使用paginate分页,搜索的时候点下一页搜索条件就变没了,所以在网上找了找一些方法,有的说是使用Page类,但是用习惯了paginate,再用Page不习惯,找到了一个方法,可以使用 ...

随机推荐

  1. centos7 防火墙

    1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...

  2. [Bayes] Understanding Bayes: Visualization of the Bayes Factor

    From: https://alexanderetz.com/2015/08/09/understanding-bayes-visualization-of-bf/ Nearly被贝叶斯因子搞死,找篇 ...

  3. [Unity3D] 03 - Component of UI

    还需进一步整理! ing... 博客参考 Unity 相关博客:Unity游戏开发爱好者 Unity 3D 连接Mysql数据库 Unity uGUI 登录界面 Unity uGUI 登录及注册功能 ...

  4. [PHP] 01 - Hypertext Preprocessor

    超级文本预处理语言:http://php.net/ 集成的服务器组件,它已经包含了 PHP.Apache.Mysql 等服务 PHP 7 https://www.tutorialspoint. com ...

  5. 揭秘IT人才特点:中美印日四国程序员比较

    不知道大家是否已经看过这篇文章,感觉比较客观.   来自:http://www.programmer.com.cn/282/        最近以裁判的身份参加了公司举办的编程大赛,发现高手云集,对公 ...

  6. JMeter命令行执行及问题解决 Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan class!

    下面介绍的是在windows环境下如何运行jmeter linux 命令相同      1.首先要准备好脚本,并且设置好线程属性,假设我们设置一个线程,循环一次.                 2. ...

  7. Spring.NET依赖注入框架学习--入门

    Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...

  8. DBeaver连接达梦数据库

    1.连接类型选择ODBC. 2.编辑驱动设置: 1)Class Name:dm.jdbc.driver.DmDriver 2)URL Template:jdbc:dm://{dbserver}/{da ...

  9. QT 获取电脑时间

    使用环境: VS2010 & QT Designer5 #include <QDateTime>  //包含头文件 QDateTime local(QDateTime::curre ...

  10. PCL Save VTK File With Texture Coordinates 使用PCL库来保存带纹理坐标的VTK文件

    我之前有一篇博客Convert PLY to VTK Using PCL 1.6.0 or PCL 1.8.0 使用PCL库将PLY格式转为VTK格式展示了如何将PLY格式文件转化为VTK格式的文件, ...