ElasticSearch 修改

普通修改

POST /target>/_update/<_id>

name字段没有会自动添加字段,如果修改内容和原来一样返回noop而且 _version不变

POST /movies/_update/1
{
    "doc" : {
        "name" : "new_name",
        "year":1996
    }
}

返回结果
{
  "_index" : "movies",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 4,
  "result" : "noop",
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "failed" : 0
  },
  "_seq_no" : 9753,
  "_primary_term" : 10
}

PUT //_doc/<_id>

PUT /movies/_doc/111220
{
  "year" : 1995,
    "title" : "Dracula: Dead and Loving It1", 
    "id" : "12",
    "genre" : [
      "Comedy"
    ]
}

id存在,则修改_version+1

脚本修改

POST movies/_update/1
{
    "script" : {
        "source": "ctx._source.genre.add(params.genre)",
        "lang": "painless",
        "params" : {
            "genre" : "Comedy1"
        }
    }
}

实现往集合中添加元素
POST movies/_update/2
{
    "script" : {
        "source": "if (ctx._source.genre.contains(params.genre)) { ctx._source.genre.remove(ctx._source.genre.indexOf(params.genre)) }",
        "lang": "painless",
        "params" : {
            "genre" : "Children"
        }
    }
}
删除数组中的某一个数据 脚本的if判断
POST movies/_update/1
{
    "script" : "ctx._source.remove('genre')"
}

脚本删除filed
POST movies/_update/1
{
    "script" : "ctx._source.new_field = 'value_of_new_field'"
}

添加 filed 名称 new_field,value value_of_new_field
原文地址:https://www.cnblogs.com/roinbi/p/14515753.html