NodeJs-ElasticSearch Bulk API error handling

后端 未结 1 702
不知归路
不知归路 2021-01-12 06:45

I can\'t find any documentation on what happens if Elastic Bulk API fails on one or more of the actions. For example, for the following request, let\'s say there is already

相关标签:
1条回答
  • 2021-01-12 07:18

    No failures in one action does not affect the others .

    From the documentation of elasticsearch bulk api :

    The response to a bulk action is a large JSON structure with the individual results of each action that was performed. The failure of a single action does not affect the remaining actions.

    In the response from elasticsearch client there is status in response corresponding to each action to determine if it was a failure or not

    Example:

        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'));
            }
        });
    

    Response:

        {
            "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 讨论(0)
提交回复
热议问题