ES深度分页与批量操作
2020-09-14 本文已影响0人
蓝色Hippie
一、分页查询
1.普通分页查询
2.深度分页
其实就是搜索的深浅度,比如第一页、第二页、第二十页等等,是浅分页。第一万页,第两万页等就是很深了
我们在获取第9999条到10009条数据的时候,其实每个分片都会拿到10009条数据,然后集合在一起,总共是30027条数据,针对这些数据再做排序处理,最后获得十条数据。
如此一来,搜索的太深,就会造成性能问题,会耗费内存和占用cpu。而且es为了性能,也不支持超过一万条数据以上的分页查询。解决深度分页问题,就是应该避免深度分页的操作(限制分页页数)。比如最多提供100页的展示等。
3.scroll滚动搜索
滚动搜索可以先查询出一些数据,然后再紧接着以此往下查询。在第一次查询的时候会有一个滚动id,相当于一个锚标记,随后再次滚动搜索需要上次的标记。每次搜索都是基于一个历史的数据快照,在查询期间,如果有数据变更,所有的内容不会变化
4.批量查询mget
未命中的结果也会返回json显示是否有值。
POST /_doc/_mget
{
"ids":[
"1008",
"1007",
"555"
]
}