1. 程式人生 > >ES:document的全量替換、強制建立以及圖解lazy delete機制

ES:document的全量替換、強制建立以及圖解lazy delete機制

1、document的全量替換
(1)語法與建立文件是一樣的,如果document id不存在,那麼就是建立;如果document id已經存在,那麼就是全量替換操作,替換document的json串內容

PUT /test_index/test_type/4
{
  "test_fied":"test test1111111"
}

(2)document是不可變的,如果要修改document的內容,第一種方式就是全量替換,直接對document重新建立索引,替換裡面所有的內容
(3)es會將老的document標記為deleted,然後新增我們給定的一個document,當我們建立越來越多的document的時候,es會在適當的時機在後臺自動刪除標記為deleted的document

2、document的強制建立

(1)建立文件與全量替換的語法是一樣的,有時我們只是想新建文件,不想替換文件,如果強制進行建立呢?

PUT /test_index/test_type/4/_create
{
  "test_fied":"test "
}
{
  "error": {
    "root_cause": [
      {
        "type": "version_conflict_engine_exception",
        "reason": "[test_type][4]: version conflict, document already exists (current version [4])",
        "index_uuid": "oT8hUqMcTXOB5Fx-rfWlzw",
        "shard": "2",
        "index": "test_index"
      }
    ],
    "type": "version_conflict_engine_exception",
    "reason": "[test_type][4]: version conflict, document already exists (current version [4])",
    "index_uuid": "oT8hUqMcTXOB5Fx-rfWlzw",
    "shard": "2",
    "index": "test_index"
  },
  "status": 409
}	

3、document的刪除

DELETE /test_index/test_type/4

(2)不會直接物理刪除,只會將其標記為deleted,當資料越來越多的時候,在後臺自動刪除
在這裡插入圖片描述