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"

    ]

}

上一篇下一篇

猜你喜欢

热点阅读