ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 分页 《空搜索》一节告诉我们在集群中有14个文档匹配我们的(空)搜索语句。但是只有10个文档在`hits`数组中。我们如何看到其他文档? 和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个主分片的索引中搜索。当我们请求结果的第一页(结果1到10)时,每个分片产生自己最顶端10个结果然后返回它们给**请求节点(requesting node)**,它再排序这所有的50个结果以选出顶端的10个结果。 > 现在假设我们请求第1000页——结果10001到10010。工作方式都相同,不同的是每个分片都必须产生顶端的10010个结果。然后请求节点排序这50050个结果并丢弃50040个! > 你可以看到在分布式系统中,排序结果的花费随着分页的深入而成倍增长。这也是为什么网络搜索引擎中任何语句不能返回多于1000个结果的原因。 > ### TIP >在《重建索引》章节我们将阐述如何能高效的检索大量文档