我必须在弹性搜索中从哈希数组中删除哈希。我尝试了下面的查询,但没有一个是有效的。请帮忙。
网址:发布https://127.0.0.1:9292/group/98902/_update
{
script : "for (int i = 0; i < ctx._source.users.size(); i++)
{if(ctx._source.users[i].id == id){ctx._source.users.remove(i);}}",
"params" : {
"id" : "9890"
}
}
OR
{script: "ctx._source.users.remove(user)",
"params" : {
"user":
{
id: "9890"
}
}}
我的反应低于预期。
{ “error”:“ElasticsearchIllegalArgumentException [无法执行脚本];嵌套:ScriptException [已禁用[groovy]的动态脚本];”, “地位”:400 }
答案 0 :(得分:1)
https://github.com/elastic/elasticsearch/issues/21375
这是我发现的解决方案,必须满足您的目的。
它对我有用,所以尝试一下
ctx._source.field.remove(ctx._source.field.indexOf(params.value))
答案 1 :(得分:0)
自ES 1.5以来,&#34;动态脚本&#34; (默认情况下,禁用从请求执行非沙盒脚本)。
不推荐,但您可以选择使用此配置:
script.inline: true
script.indexed: true
请参阅https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html