你可以的,加油

6.4.3版本 "inline": "ctx._source.tags.add(params.new_tag)"

Elasticsearch | 作者 mj4ever | 发布于2018年11月26日 | 阅读数:6363

  • Elasticsearch 6.4.3版本,利用内联脚本进行文档的部分更新;在kibana的Dev Tools中进行以下操作

POST /website/blog/2/_update
{
"script" : {
"inline": "ctx._source.tags.add(params.new_tag)",
"params" : {
"new_tag" : "tag2"
}
}
}

  • 提交成功了,但是有提示“Deprecation: Deprecated field [inline] used, expected [source] instead”,大体意思是“弃用:弃用字段[内联],期望[源]代替”

已邀请:

zz_hello

赞同来自: mj4ever

就是用source了,不用inline,此外还有lang参数为painless

mj4ever - 无问西东,只取南北

赞同来自: zz_hello

嗯,谢谢!老师给培训了,回去又看了下文档,感觉比之前清楚了一些,嵌套脚本,可以接收参数传递,语法和js很像;
比如,给tags数组添加一个不存在的标签,如果存在,就不要添加
POST website/blog/1/_update
{
"script" : {
"source": "if(ctx._source.tags.indexOf(params.tag) <= 0) {ctx._source.tags.add(params.tag)}",
"lang": "painless",
"params" : {
"tag" : "blue"
}
}
}

要回复问题请先登录注册