声明:本站文章均为作者个人原创,图片均为实际截图。如有需要请收藏网站,禁止转载,谢谢配合!!!

默认只返回10条数据,可以通过from size来控制返回的分页结果

简单分页

GET /indexName/_search
{
    query: {
        match_all: {}
    },
    from 990,
    size: 10,
    sort:[
        {"FIELD": "desc"}
    ]
}

深度分页

由于es一般是集群分布式部署的,所以会面临深度分页的问题

  • 首先在每个数据片上都排序查询出前1000条数据
  • 然后将所有节点的结果聚合,重新排序选出前1000条数据

如果搜索页面过深,性能消耗较多,因此es设置的查询结果上限是10000

解决方案

  • search after 分页时需要排序,从上一次排序开始,记录值,查询下一页数据,官方推荐

  • scroll 将排序数据形成快照,放在内存中,官方不推荐