我想要解决的情况是使用用于elasticsearch的nodejs驱动程序更新标题索引中具有与某些参数匹配的标题的文档。我正在使用的当前查询是
client.updateByQuery({
index: "title",
type: "type",
body: {
"query": {
"bool": {
"filter": [
{ "term": { "tvSeriesId": 123} },
{ "term": { "tvSeriesNumber": 456} }
]
}
},
"script": {
"inline": "ctx._source.someRandomField = 'abc'"
}
}
}, function(err, res) {
if (err) {
reportError(err)
}
cb(err, res)
}
)
我希望脚本是动态的,我可以将值传递给脚本来更改字段的值。例如,someRandomField的值可以在查询调用之前在先前的变量中声明。如何将该变量传递给脚本?
答案 0 :(得分:1)
您可以使用脚本params
执行此操作:
client.updateByQuery({
index: "title",
type: "type",
body: {
"query": {
"bool": {
"filter": [
{ "term": { "tvSeriesId": 123} },
{ "term": { "tvSeriesNumber": 456} }
]
}
},
"script": {
"inline": "ctx._source.someRandomField = newValue"
"params": {
"newValue": newRandomFieldValue
}
}
}
}, function(err, res) {
if (err) {
reportError(err)
}
cb(err, res)
}
)
newRandomFieldValue
将是Node.js代码中的一个变量,然后将其用作脚本参数。