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

Java Elasticsearch Multi-Get API 批量查询


Multi-Get API 主要用于根于id集合,批量查询文档内容,支持查询多个索引内容。

创建MultiGetRequest对象

MultiGetRequest request = new MultiGetRequest();
// 通过MultiGetRequest.Item对象设置查询参数
request.add(new MultiGetRequest.Item(
    "index",      // 索引名   
    "12345"));  // 文档id
// 添加另外一组查询参数,索引名=index, 索引Id=another_id
request.add(new MultiGetRequest.Item("index", "another_id")); 

执行请求

MultiGetResponse response = client.mget(request, RequestOptions.DEFAULT);

处理结果

// response.getResponses返回多个MultiGetItemResponse对象,每个MultiGetItemResponse对象代表一个查询结果,这里以其中一个结果为例。
// ps: 通常是需要循环遍历response.getResponses返回的结果
MultiGetItemResponse firstItem = response.getResponses()[0];
assertNull(firstItem.getFailure());              
GetResponse firstGet = firstItem.getResponse();  
String index = firstItem.getIndex(); // 获取索引名
String id = firstItem.getId();// 获取文档Id
if (firstGet.isExists()) { // 检测文档是否存在
    long version = firstGet.getVersion(); // 获取版本号
    // 查询文档内容,json字符串格式
    String sourceAsString = firstGet.getSourceAsString();      
    // 查询文档内容,Map对象格式  
    Map<String, Object> sourceAsMap = firstGet.getSourceAsMap(); 
} else {
    
}