NodeJs-ElasticSearch批量API错误处理 [英] NodeJs-ElasticSearch Bulk API error handling
问题描述
我找不到任何文档,说明如果Elastic Bulk API在一项或多项操作中失败,将会发生什么。例如,对于以下请求,假设已经有一个ID为 3的文档,那么创建应该失败-这是否会使所有其他操作失败?
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 a document with id "3", so "create" should fail- does this fail all of the other actions?
{ "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"} }
- 我正在使用nodejs弹性模块。 / li>
- I'm using nodejs elastic module.
推荐答案
一个操作失败不会影响其他操作。
No failures in one action does not affect the others .
对批量操作的响应是一个大型JSON结构,每个
的结果分别已执行的操作。
单个操作的失败不会影响其余操作。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.
elasticsearch客户的响应中有
状态
对应于每个操作的响应,以确定是否失败In the response from elasticsearch client there is
status
in response corresponding to each action to determine if it was a failure or not示例:
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')); } });
响应:
{ "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 } } ] }
这篇关于NodeJs-ElasticSearch批量API错误处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!