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

  • 相关阅读:
    eclipse常用的快捷键
    如何保留小数点后N位?
    EditText设置/隐藏光标位置、选中文本和获取/清除焦点(转)
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo异常(转)
    STL优先队列 hdu1896
    工作排序问题 poj2376
    STL存储邻接表
    二叉树的遍历
    快速排序
    并查集 并查集来判断是否存在环路
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6823435.html
Copyright © 2020-2023  润新知