Elasticsearch v7 中Java High-Level REST Client同步和异步调用

每个Elasticsearch API 支持同步/异步两种方式,同步方法直接返回一个结果对象。异步的方法以async为后缀,通过listener参数来通知结果。

同步执行

以下列方式执行IndexRequest时,客户端在继续执行代码之前等待返回IndexResponse:

IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);

异步执行

执行IndexRequest也可以以异步方式完成,以便客户端可以直接返回,用户需要通过将请求和侦听器传递给异步索引方法来指定响应或潜在故障的处理方式:

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

要执行的IndexRequest和执行完成时要使用的ActionListener。

异步方法不会阻塞并立即返回,一旦完成,如果执行成功完成,则使用onResponse方法回调ActionListener,如果失败则使用onFailure方法。

index的典型侦听器如下所示:

listener = new ActionListener<IndexResponse>() {

@Override

public void onResponse(IndexResponse indexResponse) {

}

@Override

public void onFailure(Exception e) {

}

};

方法说明:

  • onResponse — 执行成功完成时调用。
  • onFailure — 当整个IndexRequest失败时调用。
  • Get API 请求

    GetRequest 也提供了同步执行和异步执行2种方式。

    同步执行

    以下列方式执行GetRequest时,客户端在继续执行代码之前等待返回GetResponse:

    GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);

    异步执行

    执行GetRequest也可以以异步方式完成,以便客户端可以直接返回,用户需要通过将请求和侦听器传递给异步get方法来指定响应或潜在故障的处理方式:

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

    如下是上述方法的输出结果:

    (1)id 不存在的情况

    id:111111111

    null

    isExists方法返回false

    (2)id存在的情况

    id:M4KO42wB19IsZPINAb0E

    {“type”:”doc”,”word_count”:300,”author”:”rickie”,”title”:”Elasticsearch 7.x”,”publish_date”:”2019-08-31″}

    上述演示代码,可以访问github获取。

    https://github.com/rickiechina/elasticsearch

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年8月1日
    下一篇 2019年8月1日

    相关推荐