環境: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類的內置函數。