5.2.5 异步执行
- 也可以以异步方式执行 ,以便客户端可以直接返回 。用户需要指定如何通过将请求和侦听器传递到异步获取方法来处理响应或潜在故障:
GetRequest
client.getAsync(request, RequestOptions.DEFAULT, listener);
执行完成时要执行和要使用的GetRequest
ActionListener
- 异步方法不会阻止并立即返回 。完成后,如果执行成功完成,则使用 方法调用 ,如果执行失败,则使用 该方法 。失败方案和预期异常与同步执行案例相同 。ActionListeneronResponseonFailure
- 典型的侦听器如下所示:
get
ActionListener<GetResponse> listener = new ActionListener<GetResponse>() {@Overridepublic void onResponse(GetResponse getResponse) {//成功执行时调用}@Overridepublic void onFailure(Exception e) {//当整个失败时调用 。GetRequest}};
5.2.6 获取响应
- 返回的允许检索请求的文档及其元数据和最终存储的字段 。
GetResponse
String index = getResponse.getIndex();String id = getResponse.getId();if (getResponse.isExists()) {long version = getResponse.getVersion();String sourceAsString = getResponse.getSourceAsString();// <1>Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); // <2>byte[] sourceAsBytes = getResponse.getSourceAsBytes();// <3>} else {// <4>}
<1> 将文档检索为String
<2> 将文档检索为Map<String, Object>
<3> 将文档检索为byte[]
<4> 处理找不到文档的方案 。请注意,尽管返回的响应具有状态代码,但返回的是有效的,而不是引发异常 。此类响应不保存任何源文档,其方法将返回 。404 GetResponseisExistsfalse
- 当对不存在的索引执行 get 请求时,响应具有状态代码,即需要按如下方式处理的已引发请求:
404 ElasticsearchException
GetRequest request = new GetRequest("does_not_exist", "1");try {GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);} catch (ElasticsearchException e) {if (e.status() == RestStatus.NOT_FOUND) {//<1> 处理引发异常,因为索引不存在}}
<1> 处理引发异常,因为索引不存在
- 如果请求了特定的文档版本,并且现有文档具有不同的版本号,则引发版本冲突:
try {GetRequest request = new GetRequest("posts", "1").version(2);GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);} catch (ElasticsearchException exception) {if (exception.status() == RestStatus.CONFLICT) {// <1>}}
<1> 引发异常指示返回版本冲突错误
6. 结语其实很多
Api
的使用都是类似相同的,这里我们不再对其他 Api
进行解析,需要了解的完全可以去光网文档查看,文档地址在问上涨上面有 。本文由AnonyStar 发布,可转载但需声明原文出处 。
仰慕「优雅编码的艺术」 坚信熟能生巧,努力改变人生
欢迎关注微信公账号 :云栖简码 获取更多优质文章
更多文章关注笔者博客 :云栖简码
推荐阅读
- 4月16日新闻早讯,每天60秒读懂世界
- 聊一聊Redis官方置顶推荐的Java客户端Redisson
- 一文讲透FTP和SFTP的区别
- 浅析JavaScript异步到底是怎么实现的?
- JavaScript之dayjs用法,替代moment.js
- 进程、线程、并行与并发
- 10个很棒的JavaScript库,提升Web开发效率
- Java中“::”是什么含义
- Java图形验证码支持gif、中文、算术等
- 一文搞懂分类算法中常用的评估指标