elasticsearch.js:updateByQuery(如果存在),否则插入

时间:2019-10-22 06:26:57

标签: node.js elasticsearch

使用elasticsearch.js(node.js)SDK,我们可以使用client.index({ ... })来向上插入文档(如果不存在,则插入该文件,否则进行更新)。

但是,如果我只想更新特定字段,例如:

client.updateByQuery({
  index: 'test',
  body: {
    query: { match: { _id: '1' } },
    script: { inline: 'ctx._source.hello = "world"' }
  }
})

现在,我想创建一个ID为1的文档,如果它的字段hello设置为world时不存在,或者如果id为1的文档存在,则将其hello字段更新为world。这可能吗?怎么样?

1 个答案:

答案 0 :(得分:0)

您可能正在寻找update API with doc as update。用途如下:

POST test/_update/1
{
  "doc":{
    "hello": "world"
  },
  "doc_as_upsert": true
}