[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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果