成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Elasticsearch Java High Level REST Client(Update B

mykurisu / 2527人閱讀

摘要:異步方法不會阻塞并立即返回,完成后,如果執(zhí)行成功完成,則使用方法回調(diào),如果失敗則使用方法。在整個失敗時調(diào)用,在這種情況下,引發(fā)異常作為參數(shù)提供,并且沒有執(zhí)行任何操作。檢查請求是否超時。獲取處理的文檔總數(shù)。已刪除的文檔數(shù)。已執(zhí)行的批次數(shù)。

Update By Query API Update By Query請求

UpdateByQueryRequest可用于更新索引中的文檔。

它需要在其上執(zhí)行更新的現(xiàn)有索引(或一組索引)。

最簡單的UpdateByQueryRequest形式如下所示:

UpdateByQueryRequest request = new UpdateByQueryRequest("source1", "source2");

在一組索引上創(chuàng)建UpdateByQueryRequest

默認(rèn)情況下,版本沖突會中止UpdateByQueryRequest進(jìn)程,但你可以通過在請求體中設(shè)置它為proceed來計數(shù)它們。

request.setConflicts("proceed");

設(shè)置proceed當(dāng)版本沖突。

你可以通過添加查詢來限制文檔。

request.setQuery(new TermQueryBuilder("user", "kimchy"));

僅復(fù)制將字段user設(shè)置為kimchy的文檔。

也可以通過設(shè)置大小來限制處理文檔的數(shù)量。

request.setSize(10);

只復(fù)制10條文檔。

默認(rèn)情況下,UpdateByQueryRequest使用1000批次,你可以使用setBatchSize更改批量大小。

request.setBatchSize(100);

使用100個文檔批次。

按查詢更新還可以通過指定管道來使用攝取功能。

request.setPipeline("my_pipeline");

UpdateByQueryRequest還支持修改文檔的script,以下示例說明了這一點。

request.setScript(
    new Script(
        ScriptType.INLINE, "painless",
        "if (ctx._source.user == "kimchy") {ctx._source.likes++;}",
        Collections.emptyMap()));

setScript使用戶為kimchy的所有文檔上的likes字段遞增。

UpdateByQueryRequest還有助于使用sliced-scroll自動并行化到_uid上的切片,使用setSlices指定要使用的切片數(shù)。

request.setSlices(2);

設(shè)置要使用的切片數(shù)。

UpdateByQueryRequest使用scroll參數(shù)來控制它保持“搜索上下文”活動的時間。

request.setScroll(TimeValue.timeValueMinutes(10));

設(shè)置滾動時間。

如果提供路由,則路由將復(fù)制到滾動查詢,從而將進(jìn)程限制為與該路由值匹配的碎片。

request.setRouting("=cat");

設(shè)置路由。

可選參數(shù)

除上述選項外,還可以選擇提供以下參數(shù):

request.setTimeout(TimeValue.timeValueMinutes(2));

等待查詢請求更新執(zhí)行作為TimeValue的超時時間。

request.setRefresh(true);

通過調(diào)用查詢更新后刷新索引。

request.setIndicesOptions(IndicesOptions.LENIENT_EXPAND_OPEN);

設(shè)置索引選項。

同步執(zhí)行
BulkByScrollResponse bulkResponse = client.updateByQuery(request, RequestOptions.DEFAULT);
異步執(zhí)行

通過查詢更新請求異步執(zhí)行需要將UpdateByQueryRequest實例和ActionListener實例傳遞給異步方法:

client.updateByQueryAsync(request, RequestOptions.DEFAULT, listener);

要執(zhí)行的UpdateByQueryRequest和執(zhí)行完成時要使用的ActionListener。

異步方法不會阻塞并立即返回,完成后,如果執(zhí)行成功完成,則使用onResponse方法回調(diào)ActionListener,如果失敗則使用onFailure方法。

BulkByScrollResponse的典型監(jiān)聽器如下所示:

ActionListener listener = new ActionListener() {
    @Override
    public void onResponse(BulkByScrollResponse bulkResponse) {
        
    }

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

onResponse — 執(zhí)行成功完成時調(diào)用,響應(yīng)作為參數(shù)提供,并包含已執(zhí)行的每個操作的單個結(jié)果列表,請注意,一個或多個操作可能已失敗,而其他操作已成功執(zhí)行。

onFailure — 在整個UpdateByQueryRequest失敗時調(diào)用,在這種情況下,引發(fā)異常作為參數(shù)提供,并且沒有執(zhí)行任何操作。

Update By Query響應(yīng)

返回的BulkByScrollResponse包含有關(guān)已執(zhí)行操作的信息,并允許迭代每個結(jié)果,如下所示:

TimeValue timeTaken = bulkResponse.getTook(); 
boolean timedOut = bulkResponse.isTimedOut(); 
long totalDocs = bulkResponse.getTotal(); 
long updatedDocs = bulkResponse.getUpdated(); 
long deletedDocs = bulkResponse.getDeleted(); 
long batches = bulkResponse.getBatches(); 
long noops = bulkResponse.getNoops(); 
long versionConflicts = bulkResponse.getVersionConflicts(); 
long bulkRetries = bulkResponse.getBulkRetries(); 
long searchRetries = bulkResponse.getSearchRetries(); 
TimeValue throttledMillis = bulkResponse.getStatus().getThrottled(); 
TimeValue throttledUntilMillis = bulkResponse.getStatus().getThrottledUntil(); 
List searchFailures = bulkResponse.getSearchFailures(); 
List bulkFailures = bulkResponse.getBulkFailures();

獲取總耗時。

檢查請求是否超時。

獲取處理的文檔總數(shù)。

已更新的文檔數(shù)。

已刪除的文檔數(shù)。

已執(zhí)行的批次數(shù)。

跳過的文檔數(shù)。

版本沖突數(shù)。

請求必須重試批量索引操作的次數(shù)。

請求必須重試搜索操作的次數(shù)。

此請求限制的總時間不包括當(dāng)前正在休眠的當(dāng)前節(jié)流時間。

任何當(dāng)前節(jié)流閥休眠的剩余延遲或如果不休眠則為0。

搜索階段的失敗。

批量索引操作期間的失敗。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72369.html

相關(guān)文章

  • Elasticsearch Java REST Client(目錄)

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

    roland_reed 評論0 收藏0
  • Elasticsearch Java High Level REST Client(入門)

    摘要:入門本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開始使用高級別客戶端。保證能夠與運行在相同主版本和大于或等于的次要版本上的任何節(jié)點通信。與具有相同的發(fā)布周期,將版本替換為想要的客戶端版本。 Java High Level REST Client 入門 本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開始使用高級別REST客戶端。 兼容性 Java High Level REST Client需...

    honmaple 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<