NodeJs-ElasticSearch批量API错误处理

我找不到任何有关Elastic Bulk API在一项或多项操作失败时会发生什么情况的文档。例如,对于以下请求,假设已经有一个ID为“

3”的文档,那么“创建”应该 吗?

{ "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弹性模块。

回答:

任何一项行动的任何失败都不会影响其他行动。

从elasticsearch bulk api

的文档中:

对批量操作的响应是一个大型JSON结构,其中包含执行的每个操作的单独结果。单个操作的失败不会影响其余操作。

在来自Elasticsearch客户的status响应中,每个动作对应一个响应,以确定它是否失败。

例:

    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错误处理 的全部内容, 来源链接: utcz.com/qa/400193.html

回到顶部