小编典典

如果它不是现有元素,则附加到Elasticsearch字段列表/数组

elasticsearch

说我们有:

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”吗?


阅读 275

收藏
2020-06-22

共1个答案

小编典典

您可以通过稍微修改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"
     }
}'

上面的示例假定存在现场 爱好 ,并且是一个 列表, 否则您将需要更多的逻辑来处理这些 爱好

2020-06-22