赞
踩
最近项目中用到了 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 条件字段 = 条件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。