1. 程式人生 > >9、Delete API

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