滚动超时时,搜索滚动API使用的搜索上下文将自动删除。但建议使用Clear Scroll API在不再需要搜索上下文时尽快释放它们。
Clear Scroll Request
可以按如下方式创建ClearScrollRequest:
ClearScrollRequest request = new ClearScrollRequest(); (1)
request.addScrollId(scrollId); (2)
(1)创建一个新的 ClearScrollRequest
(2)将滚动id添加到要清除的滚动标识符列表中
提供滚动标识符
ClearScrollRequest允许在单个请求中清除一个或多个滚动标识符。
滚动标识符可以逐个添加到请求中:
request.addScrollId(scrollId);
或者:
request.setScrollIds(scrollIds);
同步执行
ClearScrollResponse response = client.clearScroll(request, RequestOptions.DEFAULT);
异步执行
clear scroll请求的异步执行要求将ClearScrollRequest实例和ActionListener实例传递给异步方法:
client.clearScrollAsync(request, RequestOptions.DEFAULT, listener);
要执行的ClearScrollRequest和执行完成时要使用的ActionListener
异步方法不会阻塞并立即返回。一旦完成,如果执行成功完成,则使用ActionListener调用onResponse方法;如果执行失败,则调用ActionListener使用onFailure方法。
ClearScrollResponse的典型侦听器如下所示:
ActionListener<ClearScrollResponse> listener =
new ActionListener<ClearScrollResponse>() {
@Override
public void onResponse(ClearScrollResponse clearScrollResponse) {
(1)
}
@Override
public void onFailure(Exception e) {
(2)
}
};
(1)在执行成功完成时调用。响应作为参数提供
(2)发生故障时调用。引发的异常作为参数提供
Clear Scroll Response
返回的ClearScrollResponse允许检索有关已发布搜索上下文的信息:
boolean success = response.isSucceeded(); (1)
int released = response.getNumFreed(); (2)
(1)如果请求成功,则返回true
(2)返回已释放的搜索上下文数