_update_by_query
更新数据
将_id 为 2的记录 userid 更新为6,nickname更新为 “王二”
POST /test1/_update_by_query
{
"query": {
"match": {
"_id": "2"
}
},
"script": {
"source": "ctx._source.userid = params.userid;ctx._source.nickname = params.nickname",
"params": {
"userid": 6,
"nickname": "王二"
}
}
}
注:可以使用脚本在update API中用来改变_source字段的内容,它在更新脚本中称为:ctx._source
- 需要更新的字段在脚本source中罗列
- 需要更新的值在params中罗列
高阶使用
执行一个脚本来增加计数器
POST test/_doc/1/_update
{
"script" : {
"source": "ctx._source.counter += params.count", //表示给_source里面的counter属性赋值,并且可以使用params中的一些临时参数
"lang": "painless",
"params" : { //临时参数
"count" : 4
}
}
}
给tags属性添加一个值
{
"script" : {
"source": "ctx._source.tags.add(params.tag)",
"lang": "painless",
"params" : {
"tag" : "blue"
}
}
}
tags属性中删除一个元素
我们可以从tags属性中删除一个元素。 请注意,为了避免运行时错误需要先判断是否存在待删除的元素。 请注意,如果tag在tags列表中出现的次数超过一次,则只会删除一次该标签:
{
"script" : {
"source": "if (ctx._source.tags.contains(params.tag)) { ctx._source.tags.remove(ctx._source.tags.indexOf(params.tag)) }", //先判断是否存在
"lang": "painless",
"params" : {
"tag" : "blue" //删除blue,此时只剩下red了
}
}
}
_delete_by_query
POST wkl_test/_delete_by_query
{
"query": {
"match_all": {}
}
}