Elasticsearch Document Multi Get API详解、原理与示例

245 阅读1分钟

   本文将详细介绍批量获取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主流中间件,关注公众号『中间件兴趣圈』,回复专栏可获取成体系专栏导航,回复资料可以获取笔者的学习思维导图。
在这里插入图片描述