当前位置:   article > 正文

elasticsearch-JAVA-使用UpdateByQueryRequest进行条件批量修改

updatebyqueryrequest

最近项目中用到了 es 搜索引擎 ,需求用到了 根据条件修改es 的字段数据 ,网上查了很久 很多都是 查询出要修改的id 然后再根据id 进行单个修改 这样太费事了
又看了看 es 是有批量修改的语法的

POST 索引名/_update_by_query
{
    "script": {
        "inline": "ctx._source['要修改的字段']='修改的值';"
    },
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "条件字段": "条件值"
                    }
                }
            ]
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Java api 就这样写

     
     UpdateByQueryRequest request = new UpdateByQueryRequest("索引名");
                request.setQuery(new TermQueryBuilder("条件字段名","条件字段参数"));
                request.setScript(new Script("ctx._source['要修改的字段名']='要修改为的参数';"));
                restHighLevelClient.updateByQuery(request, RequestOptions.DEFAULT);
  • 1
  • 2
  • 3
  • 4
  • 5

这样写 应该是有些缺陷的 但最总也实现了 类似于 sql 的 UPDATE 表名 set 字段 = 新数据 WHERE 条件字段 = 条件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/68042
推荐阅读
相关标签
  

闽ICP备14008679号