将元素追加到Eslasticsearch字段

如果类型不匹配,可以将一些元素追加到elasticsearch字段吗?如果我有这样的文件:

{

"counter" : 1,

"tags" : "red"

}

而且我想像这样附加另一个标签字段“蓝色”:

{

"script" : {

"source": "ctx._source.counter += params.newTag",

"lang": "painless",

"params" : {

"newTag" : "blue"

}

}

}

我想要的结果类似于:

{

"counter" : 1,

"tags" : ["red", "blue"]

}

我知道这个:

"source": "ctx._source.counter += params.newTag"

用于将字符串追加到另一个字符串

还有这个:

"source": "ctx._source.counter.add(params.newTag)"

用于将另一个元素追加到列表。那么有什么办法可以将另一个元素附加到字符串字段呢?谢谢您的任何建议。

回答:

您可以做的是添加针对tags字段类型的测试,然后将其转换为数组。该脚本应该有所帮助。

{

"script" : {

"source": "if (!(ctx._source.tags instanceof List)) {ctx._source.tags = [ctx._source.tags]} ctx._source.tags += params.newTag",

"lang": "painless",

"params" : {

"newTag" : "blue"

}

}

}

以上是 将元素追加到Eslasticsearch字段 的全部内容, 来源链接: utcz.com/qa/416470.html

回到顶部