參考文檔: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"
}
}
}