在弹性搜索中从数组中删除条目

时间:2016-02-11 07:11:09

标签: elasticsearch

我必须在弹性搜索中从哈希数组中删除哈希。我尝试了下面的查询,但没有一个是有效的。请帮忙。

网址:发布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 }

2 个答案:

答案 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