如何使用Elasticsearch将元素添加到深层数组中

时间:2018-12-16 18:50:14

标签: elasticsearch

我的数据:

    "_source": {
"owner": "102195915017611526666",
"boxes": [
    {
        "box_id": "999",
        "items": [
            {
                "item_id": "123",
                "item_key": "x",
                "item_value": "y"
            }
        ]
    },
    {
        "box_id": "888",
        "items": []
    }
]

我想将一个项目添加到项目Array中,该项目位于第二个框(box_id:888)中。我知道如何将项目添加到boxs数组中,但是我做不到这一点。我已经研究过,但一无所获。我是Elasticsearch的新手。谢谢您的帮助

编辑: 我也尝试过:

    {
    "script" : {
        "inline": "for (int i = 0; i<ctx._source.boxes.length; i++ ){if(ctx._source.boxes[i].box_id == '888') ctx._source.boxes[i].add(params.newitem);}",
        "params" : {
            "newitem" : {"item_key": "x", "item_value": "y", "item_id": "342246995990409"}
    }
},
"query": {
    "match": {
        "owner": "102195915017611526666"
    }
    }
}

但是我遇到了这个错误:

"script_stack": [
                "ctx._source.boxes[i].add(params.newitem);}",
                "                               ^---- HERE"
            ],

0 个答案:

没有答案