环境:Elasticsearch 5.6.3
需求描述:对ES文档中一个数组字段tags添加或者删除元素“3”,esIP代表Elasticsearch的IP,docid代表文档ID
方法:
1、添加数组元素
curl -XPOST 'http://esIP:9200/in_news/document/docid/_update' -d '
{"script":{"inline":"ctx._source.tags.add(params.tag)","params":{"tag":"3"}}}'
curl -XPOST 'http://esIP:9200/in_news/document/docid/_update' -d '
{"script":{"inline":"ctx._source.tags.remove(ctx._source.tags.indexOf(params.tag))","params":{"tag":"3"}}}
curl -XPOST 'http://esIP
:9200/in_news/document/_update_by_query' -d '
{"query":{"term":{"tags":"1"}},"script":{"inline":"ctx._source.tags.remove(ctx._source.tags.indexOf(params.tag))","params":{"tag":"1"}}}'
其中,add,remove都是Java中的java.util.ArrayList类的内置函数。