3

我正在使用下面的代码来更新 elasticsearch 中的文档

client.update({
   index: 'myindex',
   type: 'mytype',
   id: '1',
   body: {
     script: 'ctx._source.tags += tag',
     params: { tag: 'some new tag' }
   }
}, function (error, response) {

});

但是,这会引发编译错误。当我用上面替换标记时params.tag,它会将 null 附加到当前字段,即标识params.tagnull.

4

1 回答 1

0

我遇到了类似的困惑。 本文档分享了您在问题中的示例。另一方面,这个文档分享了一个不同的例子(我开始工作了)。

您的更新声明将是这样的:

client.update({
    index: 'myindex',
    type: 'mytype',
    id: '1',
    body: {
        script: {
            inline: 'ctx._source.tags.add(params.tag)',
            lang: 'painless',
            params: { 
                tag: 'some new tag'
            }
        }
    }
}, function (error, response) {
    // handling of error/response
});

**在添加到数组时,请注意 case的.add而不是for。+=

于 2017-11-27T20:23:56.577 回答