千家信息网

Elasticsearch Multi Get、 Bulk API的原理是什么

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容介绍了"Elasticsearch Multi Get、 Bulk API的原理是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些
千家信息网最后更新 2024年09月22日Elasticsearch Multi Get、 Bulk API的原理是什么

本篇内容介绍了"Elasticsearch Multi Get、 Bulk API的原理是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本文将详细介绍批量获取API(Multi Get API)与Bulk API。

1、Multi Get 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相同,故不重复讲解。

2、Bluk API详解

Bulk API可以在一次API调用中包含多个索引操作,例如更新索引,删除索引等。其API定义如下:

  • public final BulkResponse bulk(BulkRequest bulkRequest, RequestOptions options) throws IOException

  • public final void bulkAsync(BulkRequest bulkRequest, RequestOptions options, ActionListener listener)

其核心需要关注BulkRequest。

2.1BulkRequest详解