一般搜索请求都是返回一"页"数据,无论数据量多大都一起返回给用户,Scroll API可以允许我们检索大量数据(甚至全部数据)。Scroll API允许我们做一个初始阶段搜索并且持续批量从Elasticsearch里拉取结果直到没有结果剩下。这有点像传统数据库里的cursors(游标)。
Scroll API的创建并不是为了实时的用户响应,而是为了处理大量的数据(Scrolling is not intended for real time user requests, but rather for processing large amounts of data)。从 scroll 请求返回的结果只是反映了 search 发生那一时刻的索引状态,就像一个快照(The results that are returned from a scroll request reflect the state of the index at the time that the initial search request was made, like a snapshot in time)。后续的对文档的改动(索引、更新或者删除)都只会影响后面的搜索请求。
1. 普通请求
假设我们想一次返回大量数据,下面代码中一次请求58000条数据:

本文详细介绍了如何使用ElasticSearch的Java API进行滚动搜索(Scroll API),适用于处理大量数据。首先,由于普通请求对大数据量限制,引入Scroll API,通过设置滚动时间和滚动ID进行分批检索。接着,展示了如何初始化滚动搜索、获取滚动ID以及使用滚动ID获取下一批次结果。最后,强调了滚动ID的管理和清除,以及超时后继续使用滚动ID会导致错误。
订阅专栏 解锁全文
1653

被折叠的 条评论
为什么被折叠?



