说我们有:
curl -XPOST "http://localhost:9200/t/t/1" -d' { "hobbies" : ["a", "b"] }'
我知道我可以做到这一点来补充爱好:
curl -XPOST "http://localhost:9200/t/t/1/_update" -d' { "script" : "ctx._source.hobbies += hobby", "params" : { "hobby" : "c" } }'
但是,如果业余爱好不是’c’而是’b’,我该怎么做,这样我就不会以[“ a”,“ b”,“ b”]结束爱好了?因此,如果“ c”还不是一个爱好,它只会附加“ c”吗?
您可以通过稍微修改OP中的脚本来实现相同目的
范例:
curl -XPOST "http://localhost:9200/t/t/1/_update -d' { "script" : " if(! ctx._source.hobbies.contains(hobby)){ ctx._source.hobbies += hobby }", "params" : { "hobby" : "c" } }'
上面的示例假定存在现场 爱好 ,并且是一个 列表, 否则您将需要更多的逻辑来处理这些 爱好 。