rqxiao

es 中分页是怎么使用到分片的呢

  •  1
     
  •   rqxiao · Feb 20, 2021 · 5022 views
    This topic created in 1911 days ago, the information mentioned may be changed or developed.

    官网有写到

    理解为什么深度分页是有问题的,我们可以假设在一个有 5 个主分片的索引中搜索。 当我们请求结果的第一页(结果从 1 到 10 ),每一个分片产生前 10 的结果,并且返回给 协调节点 ,协调节点对 50 个结果排序得到全部结果的前 10 个。

    现在假设我们请求第 1000 页—​结果从 10001 到 10010 。所有都以相同的方式工作除了每个分片不得不产生前 10010 个结果以外。 然后协调节点对全部 50050 个结果排序最后丢弃掉这些结果中的 50040 个结果。

    可以看到,在分布式系统中,对结果排序的成本随分页的深度成指数上升。这就是 web 搜索引擎对任何查询都不要返回超过 1000 个结果的原因。

    为啥说 查询 10001-10010 需要 每个分片不得不产生前 10010 个结果?

    3 replies    2021-02-20 18:48:35 +08:00
    Olament
        1
    Olament  
       Feb 20, 2021   ❤️ 1
    我们简化一下这个问题,我现在有 5 个数字的集合,我要找出这 5 个集合中第 10 大的数字,那么我是不是要找到每个集合前 10 大的数字然后汇总产生第 10 大的数字。
    Vegetable
        2
    Vegetable  
       Feb 20, 2021   ❤️ 1
    因为最靠前的 10010 个结果,可能集中在某一个节点上
    fucUup
        3
    fucUup  
       Feb 20, 2021
    mapreduce 会遇到一样的问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2954 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 05:31 · PVG 13:31 · LAX 22:31 · JFK 01:31
    ♥ Do have faith in what you're doing.