如何使用sense控制台或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")"
}
}发布于 2017-08-31 21:35:08
如果要删除列表中的所有匹配项,可以执行以下操作:
{
"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\"))。
或者使用params:
{
"script": {
"lang": "painless",
"inline": "ctx._source.a.remove(ctx._source.a.indexOf(yourParamName))",
"params": {
"yourParamName": "1"
}
}
}https://stackoverflow.com/questions/45980054
复制相似问题