更新Elasticsearch中的多个文档?

时间:2019-01-29 03:28:36

标签: javascript elasticsearch

在我当前的代码中,我获取了多个文档,然后依次更新如下:

<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个文档的块,并在单个请求中更新一个块。

1 个答案:

答案 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)
    }
});