use*_*198 0 elasticsearch elasticsearch-painless
如果类型不匹配,可以将一些元素追加到elasticsearch字段吗?如果我有这样的文件:
{
"counter" : 1,
"tags" : "red"
}
Run Code Online (Sandbox Code Playgroud)
我想像这样附加另一个标签字段“蓝色”:
{
"script" : {
"source": "ctx._source.counter += params.newTag",
"lang": "painless",
"params" : {
"newTag" : "blue"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的结果类似于:
{
"counter" : 1,
"tags" : ["red", "blue"]
}
Run Code Online (Sandbox Code Playgroud)
我知道这个:
"source": "ctx._source.counter += params.newTag"
Run Code Online (Sandbox Code Playgroud)
用于将字符串追加到另一个字符串
和这个:
"source": "ctx._source.counter.add(params.newTag)"
Run Code Online (Sandbox Code Playgroud)
用于将另一个元素追加到列表。那么有什么办法可以将另一个元素附加到字符串字段?谢谢您的任何建议。
你可以做的是增加一个测试你的类型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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1063 次 |
| 最近记录: |