首页 > 其他分享 >elasticsearch 文档更新操作:update和update_by_query

elasticsearch 文档更新操作:update和update_by_query

时间:2023-12-17 09:16:06浏览次数:39  
标签:修改 update source 文档 elasticsearch query POST

API:

(elasticsearch版本7.3)
POST /<index>/_update/<_id>
POST /<index>/_update_by_query

1. POST /<index>/_update/<_id>

  1. 支持脚本,可以更新、删除或跳过修改文档。
  2. 更新文档部分内容,传递部分文档,将其合并到现有文档中。
#测试--post/update 脚本修改文档
POST /king_test_person/_update/223
{
    "script" : {
        "source": "ctx._source.birthday = params.birthday",
        "lang": "painless",
        "params" : {
            "birthday" : "2023-10-01"
        }
    }
}

#测试--post/update 部分修改文档
POST /king_test_person/_update/223
{
    "doc": {
      "name": "王五6"
    }
}

2. POST /<index>/_update_by_query

  1. 批量修改匹配到查询条件的文档
  2. 修改mapping结构

2.1 没有查询条件,全部修改

#测试--_update_by_query
POST /king_test_person/_update_by_query
{
    "script": {
      "source": "ctx._source.sex='女'",
      "lang": "painless"
    }
  }
}
总共8条数据,更新8条数据

2.2 有查询条件,修改匹配的文档 

只修改name=王五4 的数据。
#测试--_update_by_query
POST /king_test_person/_update_by_query
{
    "script": {
      "source": "ctx._source.sex='男'",
      "lang": "painless"
    },
  "query":{
      "term": {
      "name": "王五4"
    }
  }
}

 

3. 修改mapping

3.1 按查询条件修改

给id=223的文档,添加地址
#测试--_update_by_query 修改mapping结构
POST /king_test_person/_update_by_query
{
    "script": {
        "source": "ctx._source['address'] = \"四川省成都市\"",
      "lang": "painless"
    },
  "query":{
      "term": {
      "_id": 223
    }
  }
}

 

查询可以看到,只有id=223的文档有属性address

3.2 全部修改

不加查询限制,会更新所有文档
#测试--_update_by_query 修改mapping结构
POST /king_test_person/_update_by_query
{
    "script": {
        "source": "ctx._source['address'] = \"四川省成都市\"",
      "lang": "painless"
    }
}

标签:修改,update,source,文档,elasticsearch,query,POST
From: https://www.cnblogs.com/wq-blogs/p/17902609.html

相关文章

  • elasticsearch 文档删除操作:delete和delete_by_query
    api:(elasticsearch版本7.3)#删除指定id的文档DELETE/<index>/_doc/<_id>#按查询条件删除POST/<index>/_delete_by_query1.DELETE/<index>/_doc/<_id>删除指定id的文档#测试--删除文档DELETE/king_test_person/_doc/223/2.POST/<index>/_dele......
  • elasticsearch---修改文档
    修改有两种方式:全量修改:直接覆盖原来的文档增量修改:修改文档中的部分字段 全量修改是覆盖原来的文档,其本质是:根据指定的id删除文档新增一个相同id的文档注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。 增量修改增量修改......
  • ElasticSearch安装
    目录ES的安装与启动Linux系统环境准备修改虚拟内存空间大小修改最大文件描述符数量及最大线程数创建用户与密码ES的安装与配置ES的安装与启动Linux系统环境准备修改虚拟内存空间大小查询系统默认虚拟内存大小sysctl-a|grepvm.max_map_count发现系统提供的虚拟内存为64......
  • Linux部署elasticsearch集群
    文章目录一、集群规划二、安装前准备(所有节点操作)创建数据目录修改系统配置文件/etc/sysctl.conf创建用户组设置limits.conf三、初始化配置(在节点1上操作)下载安装包解压安装包修改jvm.options文件下配置的所占内存修改集群配置文件elasticsearch.yml将安装包传到另外两个节点......
  • kettle更新组件(insert_update)
    2种装载方式:全量装载和增量装载插入更新与表到表区别:表到表:只追加数据,不管表里重不重复插入更新:对比关键字段,更新所有数据(不会删除)创建数据流:需求:表输入组件只是将数据追加装载到表中,并不是我们想要的更新数据:如下:插入/更新匹配关键字id=id保留关键字的字段,用来匹......
  • MySQL Update语句一个非常经典的“坑”
    起因最近好几次有开发同学在钉钉上问我,比如下图: 问题归纳起来就是:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新…结论小结:在一条UPDATE语句中,如果要更新多个字段,字段间不能使用“AND”,而应该用逗号分隔。现象刚遇到这个问题的时候,我拿到这条语句直接在测试......
  • 使用 npm-check-updates 检查项目的 npm 依赖项是否有更新
    一、安装npm-check-updates:npminstall-gnpm-check-updates二、使用:在项目根目录运行以下命令,检查所有项目依赖项的最新版本:ncu执行结果如下:红色=主要升级青色=小幅升级绿色=补丁升级更新版本:ncu-u注意备份或者提交代码,确保包文件处于版本控制......
  • jquery.validate 如何自定义验证规则
    $.validator.addMethod("isPassword",function(value,element){varreg=/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,20}$/;returnreg.test(value);},"密码中必须包含含数字、字母、特殊符号");   $('#for......
  • JQuery-JQuery动画
     1.介绍:JQuery是一个JavaScript库。极大简化了JS编程。拥有强大的选择器支持,支持CSS1-CSS3几乎所有的选择器,及JQ独创的高级而复杂的选择器。解决不同的浏览器的兼容问题;代码简洁,功能强大,易于理解... 注入:JQuery官网:jquery.com......
  • jQuery Validate验证使用记录
    官网:https://jqueryvalidation.org特别说明:前端验证只适用于一般用户,后端必须再次验证0、演示1、导入js<scriptsrc="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script><scripttype="text/javascript"src="https://cdn.bootcss.com/jquery-valida......