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

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码判断数组元素是否相等: ```javascript function isArrayEqual(arr) { for(var i = 1; i < arr.length; i++) { if(arr[i] !== arr[0]) { return false; } } return true; } ``` 使用示例: ```javascript var arr1 = [1, 1, 1, 1]; var arr2 = [1, 2, 1, 1]; console.log(isArrayEqual(arr1)); // 输出 true console.log(isArrayEqual(arr2)); // 输出 false ``` ### 回答2: 在 JavaScript 中,有几种方法可以判断数组元素是否相等。 方法1:使用循环 可以使用一个循环来遍历数组元素,然后将每个元素与给定的值进行比较。如果有任何一个元素与给定的值相等,则可以判断数组中存在相等的元素。 示例代码: ```javascript function isEqual(arr, value) { for (var i = 0; i < arr.length; i++) { if (arr[i] === value) { return true; } } return false; } var arr = [1, 2, 3, 4, 5]; console.log(isEqual(arr, 3)); // 输出:true console.log(isEqual(arr, 6)); // 输出:false ``` 方法2:使用 includes() 方法 ES7 中的 includes() 方法可以用于判断数组是否包含某个元素。如果数组中存在与给定的值相等的元素,则返回 true;否则返回 false。 示例代码: ```javascript var arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // 输出:true console.log(arr.includes(6)); // 输出:false ``` 方法3:使用 indexOf() 方法 indexOf() 方法可以用于判断数组中是否包含某个元素。如果数组中存在与给定的值相等的元素,则返回相等元素的索引值(大于等于 0);否则返回 -1。 示例代码: ```javascript var arr = [1, 2, 3, 4, 5]; console.log(arr.indexOf(3) !== -1); // 输出:true console.log(arr.indexOf(6) !== -1); // 输出:false ``` 以上是几种判断数组元素是否相等的方法,你可以根据具体的情况选择适合的方法来使用。 ### 回答3: 在JavaScript中,判断数组元素是否相等有多种方法。 一种方法是使用for循环遍历数组,并通过比较元素的值来判断它们是否相等。例如: ```js function isArrayElementsEqual(arr) { for (let i = 1; i < arr.length; i++) { if (arr[i] !== arr[0]) { return false; } } return true; } const arr1 = [1, 1, 1, 1]; console.log(isArrayElementsEqual(arr1)); // true const arr2 = [1, 2, 3, 4]; console.log(isArrayElementsEqual(arr2)); // false ``` 另一种方法是使用数组的`every()`方法和比较函数来判断所有元素是否相等。例如: ```js function isArrayElementsEqual(arr) { return arr.every((element, index, array) => element === array[0]); } const arr1 = [1, 1, 1, 1]; console.log(isArrayElementsEqual(arr1)); // true const arr2 = [1, 2, 3, 4]; console.log(isArrayElementsEqual(arr2)); // false ``` 以上两种方法都可以用来判断数组元素是否相等,选择哪种方法取决于个人的偏好和代码的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值