如何使用elasticsearch-js(或其他方法)基于查询更新文档?

时间:2016-05-12 04:53:09

标签: node.js elasticsearch

我想执行逐个查询的更新,特别是更新包含Gary的字段名称的特定文档。我正在使用最新版本的elasticsearch(2.3)我正在使用nodejs的官方ES客户端。提供替代方法(查找文档,更新文档中的特定字段)是可以接受的正确答案。

1 个答案:

答案 0 :(得分:2)

这尚未在JavaScript客户端中发布。这将在Javascript客户端库的2.3 API版本中提供。现在,JS客户端只支持apiVersion:2.2

您可以使用任何HTTP客户端(Postman,curl,/ head /,Sense,...)来命中REST端点并执行您需要的操作。

如果您确实需要通过Node.js执行此操作,则可以使用http模块,如下所示:

var http = require('http');

var options = {
  host: 'localhost',
  port: 9200,
  path: '/your_index/your_type/_update_by_query',
  method: 'POST'
};

var req = http.request(options, function(resp){
  resp.on('data', function(chunk){
    // check update response
  });
}).on("error", function(e){
  console.log("Got error: " + e.message);
});

var query = {
  "script": {
    "inline": "ctx._source.field = 'value2'"
  },
  "query": {
    "term": {
      "field": "value1"
    }
  }
};

// write data to request body
req.write(JSON.stringify(query));
req.write('\n');
req.end();