Elasticsearch 5.6.3 通过script添加、删除数组元素

环境: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"}}}'



2、删除数组元素
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"}}}

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类的内置函数。

你可能感兴趣的:(Elasticsearch)