Elasticsearch upserting et l'ajout de tableau

Je suis en train d'écrire un script qui va upsert un nouvel enregistrement de l'utilisateur pour ElasticSearch, la mise à jour des informations si l'utilisateur existe déjà, et à ajouter une nouvelle PaymentInfo objet à l'utilisateur de Paiements du tableau s'il existe dans la mise à jour de l'objet. Voici une version simplifiée de ce que je suis en train de travailler avec un si loin:

curl -XPOST 'http://localhost:9200/usrtest/usr/1/_update' -d '
{
    "doc_as_upsert": true, 
    "doc": {
        "customerId": "1",
        "firstName": "Mark",
        "lastName": "Z",
        "emailAddress": "[email protected]",
        "paymentInfo": {
            "pid": "1",
            "amt": "10"
        }
    }
}'

Cela ne fait presque ce que je veux en ce qu'il insère le doc correctement, ou des mises à jour de la doc si un utilisateur existe avec le même ID, mais il manque l'aspect d'ajouter cette paymentInfo à l'utilisateur paymentInfos tableau si l'utilisateur existe déjà. Comme il est maintenant, c'est juste remplace la paymentInfo objet. J'ai essayé d'ajouter ce script à la mise à jour de JSON:

"script": "if (ctx._source.containsKey(\"paymentInfos\")) {ctx._source.paymentInfos += paymentInfo;} else {ctx._source.paymentInfos = paymentInfo}"

mais elasticsearch ignore doc éléments lors de la script élément est spécifié.

J'ai l'impression que je suis absent quelque chose de stupide, mais je ne suis pas sûr. Quelqu'un sait-il m'aider?

Edit:
J'ai essayé également que:

curl -XPOST 'http://localhost:9200/usrtest/usr/1/_update' -d '
{    
    "script": "if (ctx._source.containsKey(\"paymentInfos\")) {ctx._source.paymentInfos += paymentInfo;} else {ctx._source.paymentInfos = paymentInfo}",
    "upsert": {
        "customerId": "1",
        "firstName": "Mark",
        "lastName": "Z",
        "emailAddress": "[email protected]",
        "paymentInfo": {
            "pid": "1",
            "amt": "10"
         }
    },
    "params": {
         "paymentInfo": {
            "pid": "1",
                "amt": "10"
         }
    }
}'

Qui a également presque fait ce que je veux, en ce qu'il ajoute le paymentInfo objets lorsque je lance le script plusieurs fois, mais sinon, il ne met pas à jour le document lui-même (c'est à dire si je lance le script à nouveau, en changeant de Marque de Mindy, elle n'est pas mise à jour depuis upsert éléments ne sont utilisés que si le doc n'existe pas déjà).