大渡口网站建设哪家好,wordpress 站长,浙江建设三类人员证书查询,杭州临安网站建设文章目录ElasticSearch Script基础介绍基础用法List类型数据新增、删除nested数据新增、删除根据指定条件修改数据根据指定条件修改多个字段数据-查询条件也使用脚本根据指定条件删除nested中子数据数据根据条件删除数据删除之后结果创建脚本#xff0c;通过脚本调用根据条件查…
文章目录ElasticSearch Script基础介绍基础用法List类型数据新增、删除nested数据新增、删除根据指定条件修改数据根据指定条件修改多个字段数据-查询条件也使用脚本根据指定条件删除nested中子数据数据根据条件删除数据删除之后结果创建脚本通过脚本调用根据条件查询出数据删除nested子对象数据ElasticSearch Script基础介绍
语法
script: {lang: ..., source | id: ..., params: { ... } }参数说明
字段说明lang脚本使用的语言默认是painlesssource脚本的核心部分id应用于stored scriptparams传递给脚本使用的变量参数
Script有许多场景使用比如update、update-by-query、reindex等结合scripts语法说lang会有painless、expression、mustache等选择source中有ctx、doc[‘field_name’]、_source等方式取值。 基础用法
List类型数据新增、删除
添加数据到List
PUT test/_doc/1{counter : 1,tags : [red]}使用Script添加数据到List POST test/_update/1{script : {source: ctx._source.tags.add(params.tag),lang: painless,params : {tag : blue}}}使用Script删除List数据 POST test/_update/1{script: {source: if (ctx._source.tags.contains(params.tag)) { ctx._source.tags.remove(ctx._source.tags.indexOf(params.tag)) },lang: painless,params: {tag: blue}}}
nested数据新增、删除
新增nested类型数据
POST group/_update/50Bh5H8BmwYplCYFGcvg
{script : {source: ctx._source.user.add(params.user),lang: painless,params: {user: {userId:3005,userName:小卡,content:不返回具体数据。}}}
}删除nested类型数据
POST group/_update_by_query
{script : {source: ctx._source.user.removeIf(item - item.userId params.userId),lang: painless,params: {userId: 3003}},query: {term: {user.content.keyword: {value: 不返回具体数据。}}}
}根据指定条件修改数据
SQL含义
update operator_ip_segment_index set owned_network 广电网 where owned_network.keyword 新疆伊犁哈萨克自治州;
DSL语法
curl -XPOST http://8.9.60.9:9200/operator_ip_segment_index/_update_by_query -H Content-Type: application/json -d
{script:{source:ctx._source.owned_network params.owned_network,params:{owned_network:广电网},lang:painless},query:{term:{owned_network.keyword:新疆伊犁哈萨克自治州}}
}根据指定条件修改多个字段数据-查询条件也使用脚本
POST operator_ip_segment_index/_update_by_query
{script:{source:ctx._source[ip_type_code]null;ctx._source[start_ipv4_num]null;},query: {bool: {should: {script: {script: {source: long times System.currentTimeMillis()/1000 - 60 * 60 * 24;doc[update_time_seconds].value times, lang: painless}}}}}
}根据指定条件删除nested中子数据
数据
{took : 3,timed_out : false,_shards : {total : 1,successful : 1,skipped : 0,failed : 0},hits : {total : {value : 1,relation : eq},max_score : 0.8025915,hits : [{_index : group,_type : _doc,_id : ri8VboYBHSuebtDIpIft,_score : 0.8025915,_source : {groupName : 聊天2群,groupId : 1002,user : [{userName : 小王2,userId : 3002,content : 2作为一级筛选条件单独使用表示表示只返回聚合结果不返回具体数据。},{userName : 小张2,userId : 3003,content : 2作为一级筛选条件单独使用表示表示只返回聚合结果不返回具体数据。},{userName : 小卡,userId : 说啥呢,content : 不返回具体数据。}]}}]}
}根据条件删除数据
查询user.content.keyword 不返回具体数据。的数据并删除nested中userId3003的子数据 POST group/_update_by_query
{script : {source: ctx._source.user.removeIf(item - item.userId params.userId),lang: painless,params: {userId: 3003}},query: {term: {user.content.keyword: {value: 不返回具体数据。}}}
}删除之后结果
{took : 3,timed_out : false,_shards : {total : 1,successful : 1,skipped : 0,failed : 0},hits : {total : {value : 1,relation : eq},max_score : 0.8025915,hits : [{_index : group,_type : _doc,_id : ri8VboYBHSuebtDIpIft,_score : 0.8025915,_source : {groupName : 聊天2群,groupId : 1002,user : [{userName : 小王2,userId : 3002,content : 2作为一级筛选条件单独使用表示表示只返回聚合结果不返回具体数据。},{userName : 小卡,userId : 说啥呢,content : 不返回具体数据。}]}}]}
}
创建脚本通过脚本调用
根据条件查询出数据删除nested子对象数据
创建删除脚本,id为delete-nested-test
POST _scripts/delete-nested-test
{script:{lang:painless,source:ctx._source.user.removeIf(item - item.userId params.userId)}
}使用delete-nested-test脚本删除nesteduser.userId等于888的子对象数据
POST group/_update_by_query
{script: {id:delete-nested-test,params:{userId:888}},query: {term: {user.content.keyword: {value: 不返回具体数据。}}}
}