zoukankan      html  css  js  c++  java
  • ElasticSearch 分页检索

    ElasticSearch的多索引和多类别里说到我们在集群中有14个文档匹配我们的(空)搜索语句。单数仅仅有10个文档在hits数组中。我们怎样看到其它文档?

    和SQL使用LIMITkeyword返回仅仅有一页的结果一样。Elasticsearch接受fromsize參数:

    size: 果数,默认10

    from: 跳过開始的结果数,默认0

    假设你想每页显示5个结果,页码从1到3,那请求例如以下:

    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个结果的原因。

  • 相关阅读:
    C/C++多文件之间的变量定义
    PKU POJ 2186 Popular Cows 强连通分量
    重载函数
    ZOJ 2763 Prison Break
    201357 训练赛总结
    hdu 4467 Graph 构造
    201356 训练赛总结
    201353 NEERC 2012, Eastern subregional contest
    2013512 CF 183 总结
    一道动态规划
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6823435.html
Copyright © 2011-2022 走看看