搜索结果要支持翻到十万页,你会拒绝 from+size 吗?有哪些替代设计?
我的判断
十万页我会拒绝继续放大 from+size;交互翻页用 search_after,批量导出用 PIT 加 search_after 或异步任务。
from=999980&size=20 会让每个相关分片都收集并排序前一百万条候选,再由协调节点合并和丢弃,CPU 与内存成本随页深增长。把 max result window 调大只是允许更贵的查询。
用户连续翻页时,排序必须稳定并包含唯一兜底键:
"sort": [
{ "created_at": "desc" },
{ "order_id": "desc" }
],
"search_after": ["2026-07-24T10:00:00Z", 912345]
"size": 20
为了翻页期间视图稳定,会配合 PIT,并控制 keep_alive。用户若要任意跳到第十万页,产品上更合理的是增加筛选、按时间定位或异步导出,而不是承诺随机深跳。
旧 scroll 适合批处理语义但会保持搜索上下文;新导出更倾向 PIT + search_after,并限制并发与总量。