ElasticSearch关于深度分页的一些处理见解

我们都知道,分页达的数据越深时,不仅消耗的内存和cpu高,es内部配置会禁止如此深的分页,上限为10000。

正常的情况下都会有业务系统来杜绝出现这种情况,比如说百度的条件查询分页最多也几百条的样子。

而当我们业务真正需要实现这种情况时,可以采用以下两种方式,均为es提供的方式:

  • search after:分页时需要排序,原理是从上一次的排序值开始,查询下一页分数(记录上一次分页位置,减少结果集,不可向前翻页)
  • sroll:将排序数据形成快照,保存在内存中(很消耗内存,且数据没有实时性)