9、Delete API
原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html
elasticsearch版本:6.5
目錄地址:https://blog.csdn.net/mine_1/article/details/85623429
delete API可以根據給定的ID刪除指定的文件。下面的例子是刪除Twitter索引下_doc型別下ID為1的文件:
DELETE /twitter/_doc/1
得到的響應為:
{ "_shards" : { "total" : 2, "failed" : 0, "successful" : 2 }, "_index" : "twitter", "_type" : "_doc", "_id" : "1", "_version" : 2, "_primary_term": 1, "_seq_no": 5, "result": "deleted" }
(1)Versioning
索引文件都有版本控制。刪除文件時,可以指定版本,以確保我們嘗試刪除的相關文件真正被刪除,並且在此期間不能被更改。對文件執行的每個寫入操作(包括刪除)都會導致其版本增加。刪除後,已刪除文件的版本號在短時間內保持可用,以允許控制併發操作。已刪除文件的版本保持可用的時間長度由index.gc_deletes設定確定,預設為60秒。
(2)Routing
當索引有路由時,為了刪除文件,還應該提供路由值。例如:
DELETE /twitter/_doc/1?routing=kimchy
這個請求將刪除id為1的文件,但是routed將根據使用者的指定。注意:在沒有正確routing的情況下進行刪除操作將導致文件無法正確刪除。
當_routing設定為required時,如果沒有設定routing,delete API將會丟擲RountingMissingException錯誤並且刪除失敗。
(3)Automatic index creation
如果使用了外部版本控制變數,則刪除操作會自動建立一個以前未建立過的索引,如果以前未建立過特定型別,則還會自動為其建立動態型別對映。
(4)Distributed
刪除操作被hash到一個特定的分片中,然後被重定向到該id組中的主shard中,並複製(如果需要)到該id組中的shard複本中。
(5)Wait For Active Shards
當發出刪除請求時,可以設定wait_for_active_shards引數,來設定再執行刪除操作前請求最小數量的可用分片。
(6)Refresh
設定此請求所做的更改對搜尋可見的時間。
(7)Timeout
執行刪除操作時,分配給執行刪除操作的主碎片可能不可用。可能的原因有主碎片當前正在從儲存恢復或正在重新定位。預設情況下,刪除操作將在主碎片變為可用狀態前等待1分鐘,然後失敗並返回錯誤響應。timeout引數可用於顯式指定等待的時間。下面是將其設定為5分鐘的示例:
DELETE /twitter/_doc/1?timeout=5m