2016-08-13 1 views
2

Ich aktualisiere ein Dokument in Elasticsearch mit der Java-API und von Zeit zu Zeit schlägt es fehl, ohne Angabe (möglicherweise 1 von 10). Der einzige Weg, um zu sehen, ob das Update erfolgreich war, ist, das Dokument zu lesen, um zu überprüfen, ob es aktualisiert wurde.So erkennen Sie, ob ein Dokumentupdate in Elasticsearch fehlgeschlagen ist

IndexResponse hat eine Methode namens isCreated und gibt, wie der Name sagt, nur true zurück, wenn eine erfolgreiche Einfügung stattgefunden hat. Diese Methode gibt bei einer Aktualisierung false zurück, unabhängig davon, ob sie erfolgreich oder nicht erfolgreich ist.

Hier ist mein Code, um ein Dokument zu aktualisieren:

IndexRequest indexRequest = new IndexRequest(index_name, type_name, doc_id) 
    .source(json); 

UpdateRequest updateRequest = new UpdateRequest(index_name, type_name, doc_id) 
    .doc(json) 
    .upsert(indexRequest); 

UpdateResponse response = es_client.update(updateRequest).actionGet(); 

Bevor ich den fehlgeschlagenen Update beheben kann, muss ich feststellen, ob der Antrag erfolgreich war oder nicht war. Aber wie?

P.S. UpdateResponse erbt von IndexResponse und hat keine zusätzliche Methode, um Update-Status oder zumindest meines Wissens anzuzeigen.

+0

Ich _think_ Sie müssen das Dokument abrufen und überprüfen Sie es nach dem Update. –

Antwort

2

Von der UpdateResponse können Sie eine ShardInfo Instanz abrufen, die die Anzahl der Shard-Operationen failed und successful enthält. Wenn failed: 0, sind die Chancen hoch, dass die Operation erfolgreich war.

int failed = response.getShardInfo().getFailed() 
+0

Wenn die Operation fehlschlägt, ist 'getShardInfo()' wie folgt: '{" total ": 0," successful ": 0," failed ": 0}' aber manchmal ist es "{" total ": 2," successful " : 1, "failed": 0} ' – Mehran

+0

Dann ist' total: 0' ein guter Hinweis darauf, dass keine Operation stattgefunden hat. Für eine korrekte Ausführung sollten Sie überprüfen, dass "total> 0" und "total == successful" – Val

+0

Ich glaube "total" bezieht sich nicht auf die Anzahl der Dokumente, sondern etwas wie die Anzahl der Shards oder so. Ich bin mir nicht sicher. Aber ich habe nur ein Dokument aktualisiert, nicht zwei! – Mehran

Verwandte Themen