编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

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

wxchong 2024-08-13 12:18:56 开源技术 20 ℃ 0 评论

每个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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表