# 分页

在《空白搜索》一节中，搜索结果告诉我们在集群中共有14个文档匹配我们的（空白）查询。但是在`hits`数组中只有10个文档。我们怎样才能看到其他的呢？

与SQL使用`LIMIT`来控制单“页”数量类似，Elasticsearch使用的是`from`以及`size`两个参数：

| 参数     | 说明                 |
| ------ | ------------------ |
| `size` | 每次返回多少个结果，默认值为`10` |
| `from` | 忽略最初的几条结果，默认值为`0`  |

假设每页显示5条结果，那么1至3页的请求就是：

```javascript
GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10
```

当心不要一次请求过多或者页码过大的结果。它们会在返回前排序。一个请求会经过多个分片。每个分片都会生成自己的排序结果。然后再进行集中整理，以确保最终结果的正确性。

> ## 分布式系统中的大页码页面

为了说明白为什么页码过大的请求会产生问题，我们就先预想一下我们在搜索一个拥有5个主分片的索引。当我们请求第一页搜索的时候，每个分片产生自己前十名，然后将它们返回给*请求节点*，然后这个节点会将50条结果重新排序以产生最终的前十名。

现在想想一下我们想获得第1,000页，也就是第10,001到第10,010条结果，与之前同理，每一个分片都会先产生自己的前10,010名，然后请求节点统一处理这50,050条结果，然后再丢弃掉其中的50,040条！

现在你应该明白了，在分布式系统中，大页码请求所消耗的系统资源是呈指数式增长的。这也是为什么网络搜索引擎不会提供超过1,000条搜索结果的原因。

> ## TIP

在《重索引》一章中，我们将详细探讨如何才能高效地获取大量数据。
