该代码按预期工作。但是,我不想更新第三个国家作为另一个文档,而是要更新第一个文档。
DELETE /test_index PUT /test_index PUT /test_index/doc/1 { "parent": [ { "name": "India", "label": "IN" }, { "name": "China", "label": "CN" } ] } PUT /test_index/doc/2 { "parent": [ { "name": "Pakistan", "label": "PK" } ] }
这样,文档ID 1将有3个国家:印度,中国和巴基斯坦。我想我需要使用doc_as_upsert参数更新API。但是我不确定如何编写JSON。
您可以使用update API进行脚本更新:
curl -XPOST 'localhost:9200/test_index/doc/1/_update' -d '{ "script" : { "inline": "ctx._source.parent += ['name': name, 'label': label]", "params" : { "name" : "Pakistan", "label": "PK" } } }'
更新
如果要在批量查询中使用它,也可以
curl -XPOST 'localhost:9200/test_index/doc/_bulk' -d ' { "update" : { "_id" : "1"} } { "script" : { "inline": "ctx._source.parent += ['name': name, 'label': label]", "lang" : "groovy", "params" : {"name" : "Pakistan", "label": "PK"}}} '