我看到 update_by_query 可以直接更新来源的代码段
POST twitter/_update_by_query
{
"script": {
"inline": "ctx._source.likes++",
"lang": "painless"
},
"query": {
"term": {
"user": "kimchy"
}
}
}
由于我复杂的业务逻辑,我在Java中编写了一个本机脚本插件,而不是使用无痛。
{
"subtotal": 1000,
"markup": 2,
"total": 2000,
"items": [
{
"subtotal": 100,
"markup": 2,
"total": 200
},
{
"subtotal": 500,
"markup": 2,
"total": 1000
}
]
}
用户可以在应用程序中设置标记值。如果用户将标记更改为3,我想更新标记和总字段,包括嵌套对象中的字段。(注意:我无法使用无痛,因为在我的情况下,逻辑更复杂而不仅仅是将这些字段相乘。这就是我使用Java的原因
// my plugin code
public Object run() {
// change field value of "markup"
// change field value of "total"
return true;
}
几乎相似
我在尝试使用source().put("markup", 3)
,但我一直在NullPointerException
ElasticSearch版本:5.0.0
谢谢