我使用elasticsearch作为数据库来存储大量日志数据。
我知道有两种方法可以进行分页:
使用大小并来自 API
使用滚动API
现在我使用“from”进行分页。从前端和后端获取页面和大小参数(Java)
searchSourceBuilder.size(size);
searchSourceBuilder.from(page * size);
然而,如果page*size
> 10000,ES抛出异常。
我可以使用scroll API来进行分页吗?
我知道如果我使用滚动 API,searchResponse
对象将返回我一个_scroll_id
,它看起来像一个base64
string.
如何控制页面和大小?
它似乎Scroll API
只支持连续页码?
Elasticsearch 中没有任何内容允许直接跳转到特定页面,因为结果必须从不同的分片中收集。所以在你的情况下搜索后 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-after.html将是一个更好的选择。您可以减少后续查询返回的数据量,然后在到达实际请求的页面后获取完整的数据。
Example:假设您必须跳转到第 99 页,那么您可以减少所有第 98 页请求的数据量,一旦到达 99 页,您就可以获得完整的数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)