[ElasticSearch]Search之分页
之前的文章[ElasticSearch]搜索我们知道,我们的空搜索匹配到集群中的13个文档。 但是,命中数组中只有10个文档(文章只显示了2条数据,故意省略掉)。 我们如何查看其他文档呢?
与SQL使用LIMIT
关键字返回一个“页面”的结果数据相同,Elasticsearch接受from和size参数:
- size 表示应返回的结果数,默认为10
- from 表示应跳过的初始结果数,默认为0
如果想每页显示五个条数据,那么第1到3页的结果请求如下所示:
curl -XGET 'localhost:9200/_search?size=5&pretty'
curl -XGET 'localhost:9200/_search?size=5&from=5&pretty'
curl -XGET 'localhost:9200/_search?size=5&from=10&pretty'
Java版本:
SearchRequestBuilder searchRequestBuilder = client.prepareSearch();
searchRequestBuilder.setIndices(index);
searchRequestBuilder.setTypes(type);
searchRequestBuilder.setFrom(from);
searchRequestBuilder.setSize(size);
SearchResponse response = searchRequestBuilder.get();
小心分页太深或者一次请求太多的结果。 结果在返回前要进行排序。 但请记住,搜索请求通常跨越多个分片。 每个分片都会生成自己的排序结果,然后在协调节点集中排序,以确保整体顺序正确。
在分布式系统中深度分页
为了理解深度分页为什么是有问题的,我们假设在一个有5个主分片的索引中搜索。 当我们请求结果的第一页(结果从 1 到 10 ),每个分片产生自己的前10个结果,并且返回给协调节点 ,协调节点对所有50个结果进行排序,最终得到全部结果的前10个。
现在假设我们请求第1000页的数据--结果从10001到10010。所有都如上面相同的方式工作,除了每个分片不得不产生前10010个结果以外。 协调节点对全部50050个结果排序,最后丢弃掉这些结果中的50040个结果(只要10个)。
您可以看到,在分布式系统中,排序结果的成本以指数级增长。 有一个很好的理由,网页搜索引擎不会为任何查询返回超过1,000个结果。
原文:https://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
阿里云大数据利器Maxcompute学习之-假如你使用过hive
如果您是一个大数据开发工程师并且使用过hadoop的hive框架,那么恭喜您,阿里云的大数据计算服务-Maxcompute,您已经会了90%。这篇文章就来简单对比下Maxcompute和hive的异同,来方便刚开始使用Maxcompute的用户,从hive秒速迁移到Maxcompute的使用上。 首先,回顾下hive的概念。 1、hive是基于hadoop的,以表的形式来存储数据,实际上数据是存储在hdfs上,数据库和表其实是hdfs上的两层目录,数据是放在表名称目录下的,计算还是转换成mapreduce计算。2、hive可以通过客户端命令行和java api操作数据3、hive是hql语言操作表,跟通用sql语言的语法大致相同,可能会多一些符合本身计算的函数等。hql会解析成mapreduce进行相关逻辑计算4、hive有分区
-
下一篇
MaxCompute MapReduce
前言 MapReduce已经有文档,用户可以参考文档使用。本文是在文档的基础上做一些类似注解及细节解释上的工作。 功能介绍 MapReduce 说起MapReduce就少不了WordCount,我特别喜欢文档里的这个图片。比如有一张很大的表。表里有个String字段记录的是用空格分割开单词。最后需要统计所有记录中,每个单词出现的次数是多少。那整体的计算流程是 输入阶段:根据工作量,生成几个Mapper,把这些表的数据分配给这些Mapper。每个Mapper分配到表里的一部分记录。 Map阶段:每个Mapper针对每条数据,解析里面的字符串,用空格切开字符串,得到一组单词。针对其中每个单词,写一条记录<Word:单词名,Count:1> Shuffle阶段-合并排序:也是发生在Mapper上。会先对数据进行排序。比如WordCount
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker容器配置,解决镜像无法拉取问题
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境