亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Elasticsearch Java Low Level REST Client(執(zhí)行請(qǐng)求)

Code4App / 1146人閱讀

摘要:執(zhí)行請(qǐng)求一旦創(chuàng)建了,就可以通過(guò)調(diào)用或來(lái)發(fā)送請(qǐng)求,是同步的,將阻塞調(diào)用線程并在請(qǐng)求成功時(shí)返回,如果失敗則拋出異常。自定義響應(yīng)消費(fèi)者。處理返回的響應(yīng)。由于通信錯(cuò)誤或帶有指示錯(cuò)誤的狀態(tài)碼的響應(yīng),處理返回的異常。

執(zhí)行請(qǐng)求

一旦創(chuàng)建了RestClient,就可以通過(guò)調(diào)用performRequestperformRequestAsync來(lái)發(fā)送請(qǐng)求,performRequest是同步的,將阻塞調(diào)用線程并在請(qǐng)求成功時(shí)返回Response,如果失敗則拋出異常。performRequestAsync是異步的,它接受一個(gè)ResponseListener參數(shù),它在請(qǐng)求成功時(shí)調(diào)用Response,如果失敗則調(diào)用Exception。

這是同步的:

Request request = new Request(
    "GET",  
    "/");   
Response response = restClient.performRequest(request);

第一個(gè)參數(shù):HTTP方法(GET,POST,HEAD等)。

第二個(gè)參數(shù):服務(wù)器上的端點(diǎn)。

這是異步的:

Request request = new Request(
    "GET",  
    "/");   
restClient.performRequestAsync(request, new ResponseListener() {
    @Override
    public void onSuccess(Response response) {
        
    }

    @Override
    public void onFailure(Exception exception) {
        
    }
});

onSuccess方法:處理響應(yīng)。

onFailure:處理失敗。

你可以將請(qǐng)求參數(shù)添加到請(qǐng)求對(duì)象:

request.addParameter("pretty", "true");

你可以將請(qǐng)求的body設(shè)置為任何HttpEntity

request.setEntity(new NStringEntity(
        "{"json":"text"}",
        ContentType.APPLICATION_JSON));
HttpEntity指定的ContentType很重要,因?yàn)樗鼘⒂糜谠O(shè)置Content-Type header,以便Elasticsearch可以正確解析內(nèi)容。

你還可以將其設(shè)置為String,默認(rèn)為ContentTypeapplication/json。

request.setJsonEntity("{"json":"text"}");
RequestOptions

RequestOptions類保存應(yīng)在同一應(yīng)用程序中的多個(gè)請(qǐng)求之間共享的部分請(qǐng)求,你可以創(chuàng)建單例實(shí)例并在所有請(qǐng)求之間共享它:

private static final RequestOptions COMMON_OPTIONS;
static {
    RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
    builder.addHeader("Authorization", "Bearer " + TOKEN); 
    builder.setHttpAsyncResponseConsumerFactory(           
        new HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
    COMMON_OPTIONS = builder.build();
}

builder.addHeader:添加所有請(qǐng)求所需的任何header。

builder.setHttpAsyncResponseConsumerFactory:自定義響應(yīng)消費(fèi)者。

addHeader用于授權(quán)或在Elasticsearch前使用代理所需的header,無(wú)需設(shè)置Content-Type header,因?yàn)榭蛻舳藢⒆詣?dòng)從附加到請(qǐng)求的HttpEntity設(shè)置該header。

你可以設(shè)置NodeSelector來(lái)控制哪些節(jié)點(diǎn)將接收請(qǐng)求。

NodeSelector.NOT_MASTER_ONLY是一個(gè)不錯(cuò)的選擇。

你還可以自定義用于緩沖異步響應(yīng)的響應(yīng)消費(fèi)者,默認(rèn)消費(fèi)者將在JVM堆上緩沖最多100MB的響應(yīng),如果響應(yīng)較大,則請(qǐng)求將失敗。例如,如果你在堆約束環(huán)境(如上面的例子)中運(yùn)行,則可以降低可能有用的最大大小。

創(chuàng)建單例后,你可以在發(fā)出請(qǐng)求時(shí)使用它:

request.setOptions(COMMON_OPTIONS);

你還可以根據(jù)請(qǐng)求自定義這些選項(xiàng),例如,這會(huì)添加額外的header:

RequestOptions.Builder options = COMMON_OPTIONS.toBuilder();
options.addHeader("cats", "knock things off of other things");
request.setOptions(options);
多個(gè)并行異步操作

客戶端很樂(lè)意并行執(zhí)行許多操作,以下示例并行索引許多文檔,在現(xiàn)實(shí)世界的場(chǎng)景中,你可能希望使用_bulk API,但示例是作例證的。

final CountDownLatch latch = new CountDownLatch(documents.length);
for (int i = 0; i < documents.length; i++) {
    Request request = new Request("PUT", "/posts/doc/" + i);
    //let"s assume that the documents are stored in an HttpEntity array
    request.setEntity(documents[i]);
    restClient.performRequestAsync(
            request,
            new ResponseListener() {
                @Override
                public void onSuccess(Response response) {
                    
                    latch.countDown();
                }

                @Override
                public void onFailure(Exception exception) {
                    
                    latch.countDown();
                }
            }
    );
}
latch.await();

onSuccess:處理返回的響應(yīng)。

onFailure:由于通信錯(cuò)誤或帶有指示錯(cuò)誤的狀態(tài)碼的響應(yīng),處理返回的異常。

上一篇:初始化 下一篇:讀取響應(yīng)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/71923.html

相關(guān)文章

  • Elasticsearch Java REST Client(目錄)

    摘要:用于的官方高級(jí)別客戶端,基于低級(jí)別客戶端,它公開(kāi)特定的方法,并負(fù)責(zé)請(qǐng)求編組和響應(yīng)反編組。入門初始化執(zhí)行請(qǐng)求讀取響應(yīng)日志記錄通用配置嗅探器在中被添加。依賴于核心項(xiàng)目,它接受與相同的請(qǐng)求參數(shù),并返回相同的響應(yīng)對(duì)象。 Elasticsearch Java REST Client Java REST Client有兩種類型: Java Low Level REST Client:用于Elast...

    roland_reed 評(píng)論0 收藏0
  • Elasticsearch Java Low Level REST Client(讀取響應(yīng))

    摘要:讀取響應(yīng)對(duì)象由同步方法返回或作為中的參數(shù)接收,它包裝客戶端返回的響應(yīng)對(duì)象并公開(kāi)一些其他信息。有關(guān)執(zhí)行的請(qǐng)求的信息。返回響應(yīng)的主機(jī)。響應(yīng)體包含在對(duì)象中。對(duì)于返回狀態(tài)碼的請(qǐng)求,不會(huì)拋出,因?yàn)樗且粋€(gè)預(yù)期的響應(yīng),僅表示找不到該資源。 讀取響應(yīng) Response對(duì)象由同步performRequest方法返回或作為ResponseListener#onSuccess(Response)中的參數(shù)接...

    wangxinarhat 評(píng)論0 收藏0
  • Elasticsearch Java Low Level REST Client(初始化)

    摘要:設(shè)置在多次嘗試同一請(qǐng)求時(shí)應(yīng)該遵守的超時(shí),默認(rèn)值為秒,與默認(rèn)超時(shí)相同。如果自定義超時(shí),則應(yīng)相應(yīng)地調(diào)整最大重試超時(shí)。設(shè)置一個(gè)監(jiān)聽(tīng)器,每次節(jié)點(diǎn)出現(xiàn)故障時(shí)都會(huì)收到通知,以防需要采取措施,當(dāng)啟用故障嗅探時(shí)在內(nèi)部使用。 初始化 可以通過(guò)相應(yīng)的RestClientBuilder類構(gòu)建RestClient實(shí)例,通過(guò)RestClient#builder(HttpHost...)靜態(tài)方法創(chuàng)建,唯一必需的參...

    BWrong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<