小编典典

如何使用curl在elasticsearch中删除arraylist值?

elasticsearch

如何使用感知控制台或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")"
    }
}

阅读 315

收藏
2020-06-22

共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\"))

或带有参数:

{
  "script": {
    "lang": "painless",
    "inline": "ctx._source.a.remove(ctx._source.a.indexOf(yourParamName))",
    "params": {
      "yourParamName": "1"
    }
  }
}
2020-06-22