elasticsearch的深分页(deep-paging)问题原因及解决

1 deep-paging问题引入

有90个数字分布到三个分片上,每个分片上有30个数字。

shard1上:
1 、2、 3 、4 、5 、6 、7 、8、 9 、10 、11 、12 、13 、14、 15、 16、 17 、18、19 、20、 21、22、23、 24 、25 、26 、27、 28、 29 、30、

shard2上:
31 、32 、33 、34 、35 、36 、37 、38、 39 、40、 41 、42 、43、 44 、45 、46、 47 、48、 49、 50 、51 、52、 53、 54 、55 、56 57、 58、 59、 60 、

shard3上:
61、 62 、63 、64 、65 、66、 67 、68 、69 、70、 71 、72 、73、74 75、 76 、77 、78、 79 、80、81 、82、83、 84 、85、 86 、87、 88 、89、 90

假如查询第二页,然后每页15条。

是否可以每个分片上查询第二页,然后合在一起(3个shard一起45条)再排序,然后筛选15条?

答案是否定的。因为这不是topK问题,如果是topK则可以每个shard上取最大的15条,合在一起再取15条。

为什么答案是否定的,举个例子:

所以要想分页,只能每个分片上都取两页,再合起来排序,然后返回。这时问题就出现了,假如每页10条数据,我们想取第1000页。有3个分片,就需要每个分片取10010条数据合在一起,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值