elasticsearch-JAVA-使用UpdateByQueryRequest进行条件批量修改
最近项目中用到了es搜索引擎,需求用到了根据条件修改es的字段数据,网上查了很久很多都是查询出要修改的id然后再根据id进行单个修改这样太费事了。这样写应该是有些缺陷的但最总也实现了类似于sql的UPDATE表名set字段=新数据WHERE条件字段=条件。又看了看es是有批量修改的语法的。Javaapi就这样写。...
·
最近项目中用到了 es 搜索引擎 ,需求用到了 根据条件修改es 的字段数据 ,网上查了很久 很多都是 查询出要修改的id 然后再根据id 进行单个修改 这样太费事了
又看了看 es 是有批量修改的语法的
POST 索引名/_update_by_query
{
"script": {
"inline": "ctx._source['要修改的字段']='修改的值';"
},
"query": {
"bool": {
"must": [
{
"term": {
"条件字段": "条件值"
}
}
]
}
}
}
Java api 就这样写
UpdateByQueryRequest request = new UpdateByQueryRequest("索引名");
request.setQuery(new TermQueryBuilder("条件字段名","条件字段参数"));
request.setScript(new Script("ctx._source['要修改的字段名']='要修改为的参数';"));
restHighLevelClient.updateByQuery(request, RequestOptions.DEFAULT);
这样写 应该是有些缺陷的 但最总也实现了 类似于 sql 的 UPDATE 表名 set 字段 = 新数据 WHERE 条件字段 = 条件
更多推荐
已为社区贡献2条内容
所有评论(0)