2016-06-09 7 views
4

Ich kann keine Dokumentation darüber finden, was passiert, wenn die Elastic Bulk API bei einer oder mehreren Aktionen fehlschlägt. Angenommen, für die folgende Anfrage ist bereits ein Dokument mit der ID "3" vorhanden, sodass "create" fehlschlagen sollte. scheitert dies an allen anderen Aktionen?NodeJs-ElasticSearch Bulk API-Fehlerbehandlung

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } } 
{ "field1" : "value1" } 
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } } 
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } } 
{ "field1" : "value3" } 
{ "update" : {"_id" : "1", "_type" : "type1", "_index" : "index1"} } 
{ "doc" : {"field2" : "value2"} } 
  • Ich verwende NodeJS E-Modul.

Antwort

4

Keine Fehler in einer Aktion beeinflussen die anderen nicht.

Vom documentation von Elasticsearch bulk api:

Die Antwort auf eine Bulk-Aktion ist eine große JSON-Struktur mit den einzelnen Ergebnisse jeder Aktion, die durchgeführt wurde. Der Ausfall einer einzelnen Aktion wirkt sich nicht auf die verbleibenden Aktionen aus.

In der Antwort von Elasticsearch Client gibt es status in Reaktion auf jede Aktion entspricht, um zu bestimmen, ob es ein Fehler war oder nicht

Beispiel:

client.bulk({ 
     body: [ 
     // action description 
     { index: { _index: 'test', _type: 'test', _id: 1 } }, 
     // the document to index 
     { title: 'foo' }, 
     // action description 
     { update: { _index: 'test', _type: 'test', _id: 332 } }, 
     // the document to update 
     { doc: { title: 'foo' } }, 
     // action description 
     { delete: { _index: 'test', _type: 'test', _id: 33 } }, 
     // no document needed for this delete 
     ] 
    }, function (err, resp) { 
     if(resp.errors) { 
      console.log(JSON.stringify(resp, null, '\t')); 
     } 
    }); 

Reaktion:

{ 
     "took": 13, 
     "errors": true, 
     "items": [ 
       { 
         "index": { 
           "_index": "test", 
           "_type": "test", 
           "_id": "1", 
           "_version": 20, 
           "_shards": { 
             "total": 2, 
             "successful": 1, 
             "failed": 0 
           }, 
           "status": 200 
         } 
       }, 
       { 
         "update": { 
           "_index": "test", 
           "_type": "test", 
           "_id": "332", 
           "status": 404, 
           "error": { 
             "type": "document_missing_exception", 
             "reason": "[test][332]: document missing", 
             "shard": "-1", 
             "index": "test" 
           } 
         } 
       }, 
       { 
         "delete": { 
           "_index": "test", 
           "_type": "test", 
           "_id": "33", 
           "_version": 2, 
           "_shards": { 
             "total": 2, 
             "successful": 1, 
             "failed": 0 
           }, 
           "status": 404, 
           "found": false 
         } 
       } 
     ] 
} 
+0

wenn resp.errors === true - kann ich darauf zählen, dass Artikel in der gleichen Reihenfolge bestellt werden, in der ich sie gesendet habe die Massenanfrage? –

+1

Ja, es wäre in der gleichen Reihenfolge – keety