Elasticsearch数据操作-更新文档的姿势

目录

  • 1. 准备文档
  • 2. 修改简单字段name
  • 3. 修改keyword类型的数组
    • 3.1 新增部分数组元素
    • 3.2 删除部分数组元素

参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html

1. 准备文档

注意:下面的文档是基于es6,新的es7已经不支持自定义type,也就是people 默认是 _doc

PUT  hello/people/1
{
  "name":"zhangsan",
  "age":24,
  "class":101,
  "hob":["football","basketball"]
}

2. 修改简单字段name

格式是:

POST index/type/id/_update
{
   "doc" : {
       "field_name" :"field_value"  
   }
}

由此,我们将上面文档的name 更改为 lisi 更改语句如下

POST hello/people/1/_update
{
   "doc" : {
     "name":"lisi"
   }
}

[注意] 如果url不指定 _update , 且请求方式是 POST 默认是替换整个文档

3. 修改keyword类型的数组

3.1 新增部分数组元素

比如我们想在hob中添加一个爱好write且保留原有的hob

POST hello/people/1/_update
{
   "script" : {
        "source": "ctx._source.hob.add(params.hob)",
        "lang": "painless",
        "params" : {
            "hob" : "write"
        }
    }
}

3.2 删除部分数组元素

比如我们想在hob中查找baskball如果有就删除,没有就保留

POST hello/people/1/_update
{
   "script" : {
        "source": "if (ctx._source.hob.contains(params.hob)) { ctx._source.hob.remove(ctx._source.hob.indexOf(params.hob)) }",
        "lang": "painless",
        "params" : {
            "hob" : "basketball"
        }
    }
}

你可能感兴趣的:(elasticsearch)