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

資訊專(zhuān)欄INFORMATION COLUMN

Elasticsearch Java High Level REST Client(Index AP

wangzy2019 / 1807人閱讀

摘要:刷新策略作為提供。的典型偵聽(tīng)器如下所示執(zhí)行成功完成時(shí)調(diào)用。處理潛在的失敗。如果存在版本沖突,則拋出引發(fā)的異常表示返回了版本沖突錯(cuò)誤。如果將設(shè)置為并且已存在具有相同索引類(lèi)型和的文檔,則會(huì)發(fā)生相同的情況引發(fā)的異常表示返回了版本沖突錯(cuò)誤。

Index API 索引請(qǐng)求

IndexRequest需要以下參數(shù):

IndexRequest request = new IndexRequest(
        "posts", 
        "doc",  
        "1");   
String jsonString = "{" +
        ""user":"kimchy"," +
        ""postDate":"2013-01-30"," +
        ""message":"trying out Elasticsearch"" +
        "}";
request.source(jsonString, XContentType.JSON);

posts — 索引。

doc — 類(lèi)型。

1 — 文檔ID。

文檔源以字符串形式提供。

提供文檔源

除了上面顯示的String示例之外,還可以以不同的方式提供文檔源:

Map jsonMap = new HashMap<>();
jsonMap.put("user", "kimchy");
jsonMap.put("postDate", new Date());
jsonMap.put("message", "trying out Elasticsearch");
IndexRequest indexRequest = new IndexRequest("posts", "doc", "1")
        .source(jsonMap);

文檔源作為Map提供,可自動(dòng)轉(zhuǎn)換為JSON格式。

XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
    builder.field("user", "kimchy");
    builder.timeField("postDate", new Date());
    builder.field("message", "trying out Elasticsearch");
}
builder.endObject();
IndexRequest indexRequest = new IndexRequest("posts", "doc", "1")
        .source(builder);

文檔源作為XContentBuilder對(duì)象提供,Elasticsearch內(nèi)置輔助生成JSON內(nèi)容。

IndexRequest indexRequest = new IndexRequest("posts", "doc", "1")
        .source("user", "kimchy",
                "postDate", new Date(),
                "message", "trying out Elasticsearch");

文檔源作為Object鍵值對(duì)提供,轉(zhuǎn)換為JSON格式。

可選參數(shù)

可以選擇提供以下參數(shù):

request.routing("routing");

路由值。

request.parent("parent");

parent值。

request.timeout(TimeValue.timeValueSeconds(1)); 
request.timeout("1s");

等待主碎片可用的作為TimeValue的超時(shí)。

等待主碎片可用的作為String的超時(shí)。

request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
request.setRefreshPolicy("wait_for");

刷新策略作為WriteRequest.RefreshPolicy實(shí)例提供。

刷新策略作為String提供。

request.version(2);

版本。

request.versionType(VersionType.EXTERNAL);

版本類(lèi)型。

request.opType(DocWriteRequest.OpType.CREATE); 
request.opType("create");

操作類(lèi)型作為DocWriteRequest.OpType值提供。

作為String提供的操作類(lèi)型:可以為createupdate(默認(rèn))。

request.setPipeline("pipeline");

索引文檔之前要執(zhí)行的攝取管道的名稱(chēng)。

同步執(zhí)行

以下列方式執(zhí)行IndexRequest時(shí),客戶端在繼續(xù)執(zhí)行代碼之前等待返回IndexResponse

IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
異步執(zhí)行

執(zhí)行IndexRequest也可以以異步方式完成,以便客戶端可以直接返回,用戶需要通過(guò)將請(qǐng)求和偵聽(tīng)器傳遞給異步索引方法來(lái)指定響應(yīng)或潛在故障的處理方式:

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

要執(zhí)行的IndexRequest和執(zhí)行完成時(shí)要使用的ActionListener

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

index的典型偵聽(tīng)器如下所示:

listener = new ActionListener() {
    @Override
    public void onResponse(IndexResponse indexResponse) {
        
    }

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

onResponse — 執(zhí)行成功完成時(shí)調(diào)用。

onFailure — 當(dāng)整個(gè)IndexRequest失敗時(shí)調(diào)用。

索引響應(yīng)

返回的IndexResponse允許檢索有關(guān)已執(zhí)行操作的信息,如下所示:

String index = indexResponse.getIndex();
String type = indexResponse.getType();
String id = indexResponse.getId();
long version = indexResponse.getVersion();
if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) {
    
} else if (indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
    
}
ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo();
if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
    
}
if (shardInfo.getFailed() > 0) {
    for (ReplicationResponse.ShardInfo.Failure failure :
            shardInfo.getFailures()) {
        String reason = failure.reason(); 
    }
}

處理(如果需要)第一次創(chuàng)建文檔的情況。

處理(如果需要)文檔被重寫(xiě)的情況,因?yàn)樗呀?jīng)存在。

處理成功碎片數(shù)小于總碎片數(shù)的情況。

處理潛在的失敗。

如果存在版本沖突,則拋出ElasticsearchException

IndexRequest request = new IndexRequest("posts", "doc", "1")
        .source("field", "value")
        .version(1);
try {
    IndexResponse response = client.index(request, RequestOptions.DEFAULT);
} catch(ElasticsearchException e) {
    if (e.status() == RestStatus.CONFLICT) {
        
    }
}

引發(fā)的異常表示返回了版本沖突錯(cuò)誤。

如果將opType設(shè)置為create并且已存在具有相同索引、類(lèi)型和ID的文檔,則會(huì)發(fā)生相同的情況:

IndexRequest request = new IndexRequest("posts", "doc", "1")
        .source("field", "value")
        .opType(DocWriteRequest.OpType.CREATE);
try {
    IndexResponse response = client.index(request, RequestOptions.DEFAULT);
} catch(ElasticsearchException e) {
    if (e.status() == RestStatus.CONFLICT) {
        
    }
}

引發(fā)的異常表示返回了版本沖突錯(cuò)誤。

上一篇:Elasticsearch Java High Level REST Client(入門(mén)) 下一篇:Get API

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

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

相關(guān)文章

  • Elasticsearch Java High Level REST Client(入門(mén))

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

    honmaple 評(píng)論0 收藏0
  • Elasticsearch Java REST Client(目錄)

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

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

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

0條評(píng)論

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