本文将详细介绍批量获取API(Multi Get API)。
详细API如下:
- public final MultiGetResponse mget(MultiGetRequest multiGetRequest, RequestOptions options) throws IOException
- public final void mgetAsync(MultiGetRequest multiGetRequest, RequestOptions options, ActionListener listener)
其核心需要关注MultiGetRequest 。
从上面所知,mget及批量获取文档,通过add方法添加多个Item,每一个item代表一个文件获取请求,其相关字段已在get API中详细介绍,这里就不做过多详解。
Mget API使用示例
public static void testMget() {
RestHighLevelClient client = EsClient.getClient();
try {
MultiGetRequest request = new MultiGetRequest();
request.add("twitter", "_doc", "10");
request.add("twitter", "_doc", "11");
request.add("twitter", "_doc", "12");
request.add("gisdemo", "_doc", "10");
MultiGetResponse result = client.mget(request, RequestOptions.DEFAULT);
System.out.println(result);
} catch (Throwable e) {
e.printStackTrace();
} finally {
EsClient.close(client);
}
}
返回的结果其本质是一个 GetResponse的数组,不会因为其中一个失败,整个请求失败,但其结果中会标明每一个是否成功。
其返回结果类图如下:
其字段过滤(Source filtering)、路由等机制与Get API相同,详情请参考:Elasticsearch Document Get API详解、原理与示例
见文如面,我是威哥,热衷于成体系剖析JAVA主流中间件,关注公众号『中间件兴趣圈』,回复专栏可获取成体系专栏导航,回复资料可以获取笔者的学习思维导图。