一架梯子,一头程序猿,仰望星空!

Java Elasticsearch Get Api


Get Api 主要用于根据文档ID查询索引数据。

创建Get Request

// 创建GetRequest,索引名=posts, 文档ID=1
GetRequest getRequest = new GetRequest(
        "posts", 
        "1"); 

其他可选参数

是否返回文档内容

默认返回文档内容

// 不返回文档内容
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.routing("routing"); 

Version

设置文档版本

request.version(2); 

执行请求

以同步的方式执行请求

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

以异步方式执行请求

client.getAsync(request, RequestOptions.DEFAULT, new ActionListener< GetResponse>() {
            @Override
            public void onResponse(GetResponse getResponse) {
                // 请求成功回调函数
            }

            @Override
            public void onFailure(Exception e) {
                // 请求失败回调函数
            }
        });

处理请求结果

String index = getResponse.getIndex();
String id = getResponse.getId();
// 检测索引是否存在
if (getResponse.isExists()) {
    // 获取版本号
    long version = getResponse.getVersion();
    // 获取文档内容,json字符串形式
    String sourceAsString = getResponse.getSourceAsString();    
    // 获取文档内容,map形式
    Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); 
    // 获取文档内容,字节数组形式
    byte[] sourceAsBytes = getResponse.getSourceAsBytes();          
} else {
    
}