如何使用感知控制台或curl在Elasticsearch中删除arraylist值?
我想删除任何数组元素。
POST /q/q/ { "a": [ "z", "q", "1" ] }
它对我不起作用:
POST /q/q/AV4sjk40mWHLgYFNkmNd/_update { "script": { "lang": "painless", "inline": "ctx._source.a -=newsupp", "params": { "newsupp": "p" } } }
要么
POST /q/q/AV4sjk40mWHLgYFNkmNd/_update { "script": { "lang": "painless", "inline": "ctx._source.a.remove("1")" } }
如果要删除列表中的所有事件,可以执行以下操作:
{ "script": { "lang": "painless", "inline": "ctx._source.a.removeAll(Collections.singleton('1'))" } }
或者,如果您只想删除第一个,例如:
{ "script": { "lang": "painless", "inline": "ctx._source.a.remove(ctx._source.a.indexOf('1'))" } }
另请注意,如果您想使用双引号就可以了,但是您需要将其转义,例如ctx._source.a.indexOf(\"1\"))。
ctx._source.a.indexOf(\"1\"))
或带有参数:
{ "script": { "lang": "painless", "inline": "ctx._source.a.remove(ctx._source.a.indexOf(yourParamName))", "params": { "yourParamName": "1" } } }