Elasticsearch數據操作-更新文檔的姿勢

參考文檔: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"
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章