一尘不染

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

elasticsearch

我要执行按查询更新,特别是更新其中字段名称包含Gary的特定文档。我正在使用最新版本的elasticsearch(2.3)我正在使用官方ES客户端的nodejs。提供一种替代方法来执行此操作(查找文档,更新文档中的特定字段)可以作为正确答案。


阅读 311

收藏
2020-06-22

共1个答案

一尘不染

该代码尚未在JavaScript客户端中发布。这将在Javascript客户端库的2.3
API版本中提供。目前,JS客户端仅支持apiVersion:2.2

您可以使用任何HTTP客户端(邮递员,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();
2020-06-22