是否可以使用ScrollApi在ElasticSearch中进行分页前进和后退?
经典解决方案(setFrom(),setSize())不适合,因为windows_size很小。
scrollApi下面的代码可以无限滚动。
if (parameters.getOffset() == 1) {
SearchRequestBuilder searchRequestBuilder = client.prepareSearch(MY_INDEX).setTypes(documentsType);
//...
} else {
//
SearchResponse scrollResponse = client.prepareSearchScroll(parameters.getScrollId())
.setScroll(TimeValue.timeValueMinutes(1)).get();
//...
}
答案 0 :(得分:0)
是的,当总结果计数大于10000时,可使用滚动api来分页响应。 它是这样工作的: 1.使用滚动关键字和大小(指示每页结果数)首次搜索ES 2.因此,ES将向您返回第一批结果和滚动ID。 3.在下次调用ES时,您需要传递相同的滚动ID以及size参数,以获取下一批,依此类推。
如果您有前端,则可以在结果中传递滚动ID,以便来自UI的下一个调用在请求中包括该ID,然后您可以在后端服务中使用它进行ES调用。
详细信息的官方网站-https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html
答案 1 :(得分:0)