在我当前的代码中,我获取了多个文档,然后依次更新如下:
<div id="NewTraining" >
<div id="opTableDiv" class="tableFixHead">
<table class="sortable" border="1" id="table2">
<thead>
<tr>
<th>ID Number</th>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr id="TrainTR" style="font-size:11px">
</tr>
</tbody>
</table>
</div>
</div>
此方法存在超时问题。
所以我想在一个请求中更新多个文档。但是我不确定如何为其构造主体,异步发送请求,然后如何处理响应。我基本上想将“结果”分解成100个文档的块,并在单个请求中更新一个块。
答案 0 :(得分:0)
您可以改为这样做,即首先创建所有批量命令,然后调用_bulk
端点:
const bulk = [];
results.hits.hits.forEach(function (hit) {
hit._source.taskName = 'My-task-name';
bulk.push({update: {_index: 'my-index', _type: 'default', _id: hit._id}});
bulk.push({doc: hit._source});
});
esClient.bulk({
body: bulk
}, function (err, resp) {
// ...
if (err) {
console.log(err);
}
if(resp) {
console.log(resp)
}
});