ES 的 from size 和 scroll 和 search after
from size
from size 是最常见的分页方式,类比 MySQL 的 offset limit
由于 ES 是天然分布式的,数据分散在各个 shards 上,所以需要查询
from + size 的条数时,coordinate node 就向该 index 的其余的
shards 发送同样的请求,等汇总到 (shards × (from + size))
条数时在 coordinate node 再进行一次排序,最终抽取出真正 from 后的 size
条结果
显而易见,当 shards
较多、分页深度很大时,这种方式存在很大的性能问题,这也是 ES 默认深度为
from + size <= 10000 的原因