[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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
存储 SQL JSON
Elasticsearch Search API之搜索模板(search Template)
Elasticsearch Search API之搜索模板(search Template)
Elasticsearch Search API之搜索模板(search Template)
|
监控 API UED
Elasticsearch 异步搜索 Async search 实战
1、Elasticsearch 异步搜索定义 异步搜索 API 可异步执行搜索请求、监控其进度并检索可用的部分结果。 如下的官方介绍动画,能更加生动的介绍清楚异步检索。 传统检索 VS 异步检索,在数据量比较大时: 传统检索可能导致超时,以至于无数据返回;或者需要等待很久,用户体验差。 异步检索,可以快速响应数据,用户无需等待。
890 0
Elasticsearch 异步搜索 Async search 实战
|
测试技术 索引
Elasticsearch search after分页检索案例
Elasticsearch search after分页检索案例分享 The best elasticsearch highlevel java rest api-----bboss 1.准备工作 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端 2.
4916 0
|
11月前
|
算法
白话Elasticsearch14-深度探秘搜索技术之基于multi_match 使用most_fields策略进行cross-fields search弊端
白话Elasticsearch14-深度探秘搜索技术之基于multi_match 使用most_fields策略进行cross-fields search弊端
65 0
Elasticsearch Search APIs3
Elasticsearch Search APIs3
41 0
Elasticsearch Search APIs2
Elasticsearch Search APIs
47 0
   Elasticsearch Search APIs2
|
关系型数据库 MySQL 测试技术
Elasticsearch Search APIs1
Elasticsearch Search APIs
69 0
Elasticsearch搜索模板search tempalte
Elasticsearch搜索模板search tempalte
|
存储 Java API
Elasticsearch Search API之(Request Body Search 查询主体)-下篇
Elasticsearch Search API之(Request Body Search 查询主体)-下篇
Elasticsearch Search API之(Request Body Search 查询主体)-下篇
|
存储 自然语言处理 算法
Elasticsearch Search API之(Request Body Search 查询主体)-上篇
Elasticsearch Search API之(Request Body Search 查询主体)-上篇
Elasticsearch Search API之(Request Body Search 查询主体)-上篇

热门文章

最新文章