Objekte aus dem Array entfernen elastische Suche

Ich muss ein Objekt aus dem Array entfernen, das die Bedingung erfüllt. Ich kann das Objekt des Arrays auf der Grundlage der folgenden Bedingung aktualisieren:

PUT twitter/twit/1
{"list": 
     [
        {
            "tweet_id": "1",
            "a": "b"
        },
        {
            "tweet_id": "123",
            "a": "f"
        }
    ]
}

POST /twitter/twit/1/_update
{"script":"foreach (item :ctx._source.list) {
                if item['tweet_id'] == tweet_id) {
                      item['new_field'] = 'ghi';
                }
           }",
 "params": {tweet_id": 123"}
}

dies arbeitet

für entfernen mache ich das

POST /twitter/twit/1/_update
{ "script": "foreach (item : ctx._source.list) {
                    if item['tweet_id'] == tweet_id) {
                          ctx._source.list.remove(item); 
                    }
            }",
  "params": { tweet_id": "123" }
}

aber das funktioniert nicht und gibt diesen Fehler,

ElasticsearchIllegalArgumentException [Skript konnte nicht ausgeführt werden]; verschachtelt: ConcurrentModificationException; Fehler: ElasticsearchIllegalArgumentException [Skript konnte nicht ausgeführt werden]; verschachtelt: ConcurrentModificationException

Ich kann ein ganzes Array oder ein ganzes Feld mit @ entfern

"script": "ctx._source.remove('list')"

Ich kann ein Objekt auch aus dem Array entfernen, indem ich alle Schlüssel eines Objekts mit @ spezifizier

"script":"ctx._source.list.remove(tag)",
     "params" : {
        "tag" : {"tweet_id": "123","a": "f"}

Mein Knotenmodul Elastic Search Version ist 2.4.2 Elastic Search Server ist 1.3.2

Antworten auf die Frage(2)

Ihre Antwort auf die Frage