开发学院

您的位置:首页>教程>正文

教程正文

ElasticSearch 7 JAVA实例:Clear Scroll API

Clear Scroll API

  当滚动超时时,Search Scroll API使用的搜索上下文会自动删除。但是建议使用Clear Scroll API,一旦不再需要搜索上下文,就立即释放它们。

ClearScrollRequest

  可以按如下方式创建一个ClearScrollRequest:

ClearScrollRequest request = new ClearScrollRequest(); //创建一个新的ClearScrollRequest
request.addScrollId(scrollId); //将滚动id添加到要清除的滚动标识符列表中

提供滚动标识符

  ClearScrollRequest允许在单个请求中清除一个或多个滚动标识符。

  滚动标识符可以一个接一个地添加到请求中:

request.addScrollId(scrollId);

  或者一起使用:

request.setScrollIds(scrollIds);

同步方式执行

ClearScrollResponse response = client.clearScroll(request, RequestOptions.DEFAULT);

异步方式执行

  ClearScrollRequest的异步执行需要将ClearScrollRequest实例和ActionListener实例都传递给异步方法:

client.clearScrollAsync(request, RequestOptions.DEFAULT, listener);

  异步方法不会阻塞并立即返回。如果执行成功,则使用onResponse方法回调操作侦听器,如果执行失败,则使用onFailure方法回调操作侦听器。

  一个典型的ClearScrollResponse监听器像下面这样:

ActionListener<ClearScrollResponse> listener =
        new ActionListener<ClearScrollResponse>() {
    @Override
    public void onResponse(ClearScrollResponse clearScrollResponse) {
        //成功的时候调用
    }

    @Override
    public void onFailure(Exception e) {
        //失败的时候调用
    }
};

ClearScrollResponse

  返回的ClearScrollResponse允许检索关于发布的搜索上下文的信息:

boolean success = response.isSucceeded(); //如果请求成功返回true
int released = response.getNumFreed(); //返回发布的搜索上下文的数量