1、create 新增記錄
1.1 新增記錄不指定id,讓es自動生成
POST logs/_doc { "Level":"Warn", "Content":"111" }
結果如下:
{ "_index" : "logs", "_id" : "Hd5vpoIBC5fFiL3XSTWi", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 3, "_primary_term" : 1 }
此時id由es自動生成爲一個guid.
1.2 通過put id不存在做插入操作,id存在全量替換
PUT logs/_doc/1 { "Level":"Warn", "Content":"111" }
結果如下:
{ "_index" : "logs", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
第一次創建result是created,說明創建成功.但是如果再次執行上面的插入代碼result就會變爲updated,put會做全量替換.
1.3 通過put搭配created解決全量替換的問題
PUT logs/_create/2 { "Level":"Warn", "Content":"111" }
在指定操作是created時,如果重複插入會拋異常
2、delete 刪除記錄
es中的刪除是軟刪除,每條記錄會維護一個版本號,通過變更狀態和版本來標記刪除.具體刪除生效時間參數值可配置.
DELETE logs/_doc/1
3、update 部分字段更新操作
如果需要更新某條記錄的部分字段,代碼如下:
POST logs/_update/2
{
"doc": {
"Level":"Error"
}
}
這樣實現了對id爲2的記錄的Level字段的更新.也可以通過update更新全部字段,這裏不做講解.
4、指定執行失敗是否輸出錯誤信息(這裏常用於批量操作)
PUT logs/_create/3?filter_path=items.*.error { "Level":"Warn", "Content":"111" }
這裏如果id爲3的記錄不存在會輸出"{}",存在則輸出異常信息,常用於批量操作.
5、_bulk批量操作
_bulk相對於上面的單條語句操作的優勢是,使用了更少的內存.但是其可讀性很差.
POST _bulk?filter_path=items.*.error {"create":{"_index":"logs","_id":33}} {"Level":"Warn","Content":"111"} {"update":{"_index":"logs","_id":33}} {"doc":{"Level":"Error"}} {"delete":{"_index":"logs","_id":33}}
這裏連續執行了create、delete、upddate等三個批量操作,異常信息會輸出,如果不存在則輸出"{}".