每个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) {
}
};
方法说明:
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进行处理,非常感谢!