如何使用ElasticSearch中的脚本更新类型为array的字段?

时间:2016-09-14 06:11:39

标签: elasticsearch groovy

我有一个名为'标签的字段'在我的文档中,这是一个类型数组,我该怎么做:

If a tag is in the field 'tags', then do nothing; else add the tag to 'tags'.

请原谅我,我不知道groovy,但我已经尝试过这个:

curl -XPOST localhost:9200/file/company/13862/_update?pretty -d '{script:{inline:"ctx._source.tags.contains(tag) ? ctx.op=\"noop\" : ctx._source.tags += tag", params: {tag: 3}}}'

但结果是错误:

  

"无法编译内联脚本[ctx._source.tags.contains(tag)? ctx.op = \"空操作\" :ctx._source.tags + = tag]使用lang [groovy]"

1 个答案:

答案 0 :(得分:0)

试试这个

{
  "script": {
    "inline": "if(ctx._source.tags.contains(tag)){ ctx.op = \"none\"} else{ ctx._source.tags += tag }",
    "params": {
      "tag": 3
    }
  }
}