[ElasticSearch]Search之分页

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 之前的文章[ElasticSearch]搜索我们知道,我们的空搜索匹配到集群中的13个文档。 但是,命中数组中只有10个文档(文章只显示了2条数据,故意省略掉)。

之前的文章[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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
缓存 搜索推荐 关系型数据库
Elasticsearch - 闲聊ElasticSearch中的分页
Elasticsearch - 闲聊ElasticSearch中的分页
153 0
|
9月前
elasticsearch使用 scroll 滚动分页实战实例
elasticsearch使用 scroll 滚动分页实战实例
286 0
|
4月前
|
缓存 关系型数据库 API
京东面试题:ElasticSearch深度分页解决方案!
京东面试题:ElasticSearch深度分页解决方案!
|
7月前
|
数据库
面试题ES问题之Elasticsearch的排序分页和高亮功能如何解决
面试题ES问题之Elasticsearch的排序分页和高亮功能如何解决
59 0
|
8月前
|
存储 数据库 开发者
Elasticsearch中的三种分页策略深度解析:原理、使用及对比
Elasticsearch中的三种分页策略深度解析:原理、使用及对比
|
SQL 索引
ElasticSearch分页
es有多种方式实现分页查询:from+size,scroll,searchAfter,本文讨论各种方式的利弊和适用场景。
684 0
|
算法 索引
Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询
Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询
377 0
Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询
Elasticsearch Search APIs2
Elasticsearch Search APIs
88 0
   Elasticsearch Search APIs2
|
存储 JSON 搜索推荐
41-微服务技术栈(高级):分布式搜索引擎ElasticSearch(RestClient文档处理[搜索/分页/高亮/地理坐标])
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
183 0
|
存储 JSON 自然语言处理
40-微服务技术栈(高级):分布式搜索引擎ElasticSearch(DSL语法、搜索结果[排序/分页/高亮]处理)
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
164 0

热门文章

最新文章