需求:实时从es中采集大量数据
分析:
既然是大批量数据,所以全量采集肯定不行,需要增量采集数据。
ES中支持三种数据分页查询方案,分别是 1.from + size浅分页 2. scroll 3. search after
在这三种分页方式中,from + size不适合数据量很大的场景,scroll不适合实时场景,而search after在es5.x版本之后应运而生,较好的解决了这个问题。如下官方文档所示:
search after 工作流程:
- 连接es客户端
- 指定一个或多个排序字段(建议是_id或者是timestamp)并指定页大小使用search after方式获取第一页数据
- 利用第一页数据中最后一条数据的sortValue来进行下一次的查询,循环该步骤直到查询结束。
总结:
使用search after需要把握的几个点有:1. sort的字段 2. sortValue值的滚动