资讯专栏INFORMATION COLUMN

Elasticsearch Java High Level REST Client(Get API)

bang590 / 2746人阅读

摘要:将标志设置为默认为。响应返回的允许检索所请求的文档及其元数据和最终存储的字段。如果已请求特定文档版本,并且现有文档具有不同的版本号,则会引发版本冲突引发的异常表示返回了版本冲突错误。

Get API Get请求

GetRequest需要以下参数:

GetRequest getRequest = new GetRequest(
        "posts", 
        "doc",  
        "1");

posts — 索引。

doc — 类型。

1 — 文档id。

可选参数

可以选择提供以下参数:

request.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE);

禁用源检索,默认情况下启用

String[] includes = new String[]{"message", "*Date"};
String[] excludes = Strings.EMPTY_ARRAY;
FetchSourceContext fetchSourceContext =
        new FetchSourceContext(true, includes, excludes);
request.fetchSourceContext(fetchSourceContext);

为特定字段配置源包含

String[] includes = Strings.EMPTY_ARRAY;
String[] excludes = new String[]{"message"};
FetchSourceContext fetchSourceContext =
        new FetchSourceContext(true, includes, excludes);
request.fetchSourceContext(fetchSourceContext);

为特定字段配置源排除

request.storedFields("message"); 
GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);
String message = getResponse.getField("message").getValue();

配置特定存储字段的检索(要求字段分别存储在映射中)。

检索message存储字段(要求字段分别存储在映射中)。

request.routing("routing");

路由值。

request.parent("parent");

parent值。

request.preference("preference");

偏好值。

request.realtime(false);

realtime标志设置为false(默认为true)。

request.refresh(true);

在检索文档之前执行刷新(默认为false)。

request.version(2);

版本。

request.versionType(VersionType.EXTERNAL);

版本类型。

同步执行

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

GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
异步执行

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

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

要执行的GetRequest和执行完成时要使用的ActionListener

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

get的典型监听器看起来像:

ActionListener listener = new ActionListener() {
    @Override
    public void onResponse(GetResponse getResponse) {
        
    }

    @Override
    public void onFailure(Exception e) {
        
    }
};

onResponse — 执行成功完成时调用。

onFailure — 在整个GetRequest失败时调用。

Get响应

返回的GetResponse允许检索所请求的文档及其元数据和最终存储的字段。

String index = getResponse.getIndex();
String type = getResponse.getType();
String id = getResponse.getId();
if (getResponse.isExists()) {
    long version = getResponse.getVersion();
    String sourceAsString = getResponse.getSourceAsString();        
    Map sourceAsMap = getResponse.getSourceAsMap(); 
    byte[] sourceAsBytes = getResponse.getSourceAsBytes();          
} else {
    
}

以字符串形式检索文档。

将文档检索为Map

byte[]的形式检索文档。

处理未找到文档的方案,请注意,虽然返回的响应具有404状态代码,但返回有效的GetResponse而不是抛出异常,此类响应不包含任何源文档,并且其isExists方法返回false

当针对不存在的索引执行get请求时,响应具有404状态代码,抛出ElasticsearchException,需要按如下方式处理:

GetRequest request = new GetRequest("does_not_exist", "doc", "1");
try {
    GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);
} catch (ElasticsearchException e) {
    if (e.status() == RestStatus.NOT_FOUND) {
        
    }
}

处理抛出的异常,因为索引不存在。

如果已请求特定文档版本,并且现有文档具有不同的版本号,则会引发版本冲突:

try {
    GetRequest request = new GetRequest("posts", "doc", "1").version(2);
    GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);
} catch (ElasticsearchException exception) {
    if (exception.status() == RestStatus.CONFLICT) {
        
    }
}

引发的异常表示返回了版本冲突错误。

上一篇:Index API 下一篇:Exists API

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72373.html

相关文章

  • Elasticsearch Java REST Client(目录)

    摘要:用于的官方高级别客户端,基于低级别客户端,它公开特定的方法,并负责请求编组和响应反编组。入门初始化执行请求读取响应日志记录通用配置嗅探器在中被添加。依赖于核心项目,它接受与相同的请求参数,并返回相同的响应对象。 Elasticsearch Java REST Client Java REST Client有两种类型: Java Low Level REST Client:用于Elast...

    roland_reed 评论0 收藏0
  • Elasticsearch Java High Level REST Client(入门)

    摘要:入门本节描述从获取工件到在应用程序中使用它如何开始使用高级别客户端。保证能够与运行在相同主版本和大于或等于的次要版本上的任何节点通信。与具有相同的发布周期,将版本替换为想要的客户端版本。 Java High Level REST Client 入门 本节描述从获取工件到在应用程序中使用它如何开始使用高级别REST客户端。 兼容性 Java High Level REST Client需...

    honmaple 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<