ES:document的全量替換、強制建立以及圖解lazy delete機制
阿新 • • 發佈:2018-11-05
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,當資料越來越多的時候,在後臺自動刪除