elasticsearch7.x文檔API Delete操作相關

併發控制

Elasticsearch是分佈式的,所以需要對請求進行併發控制。可以通過傳遞參數if_seq_no和if_primary_term來指定序列號和主項來控制文檔的刪除,只有在文檔的序列號(_seq_no)和主項(_primary_term)與指定的值一致時纔會執行刪除操作,否則會返回version_conflict_engine_exception異常和狀態碼409。

版本控制

通過version參數可以確保想要刪除的文檔確實被刪除了,且沒有其他更改。對文檔執行的每個寫操作(包括刪除操作)都會導致其版本增加。刪除後的文檔版本號在短時間內保持可用,以便控制併發操作。可用時間長度由索引設置index.gc_deletes決定,默認爲60秒。

路由

如果在索引時使用了路由,那麼在刪除文檔時需要通過_routing以同樣的規則進行路由,否則文檔不會被刪除。如果定義了_routing映射並設置爲必需的,則當沒有提供或提取到路由值,刪除操作會拋出RoutingMissingException異常並拒絕請求。

自動創建索引

如果使用外部版本控制變量,則如果之前沒有創建索引,刪除操作將自動創建索引。

等待活動分片

通過wait_for_active_shards參數可以設置開始處理刪除請求前需要激活的分片副本的最少數量。

超時

在執行刪除操作時,分配執行刪除操作的主分片可能不可用。比如主分片正在從存儲中恢復或正在進行遷移。默認情況下,刪除操作會等待主分片一分鐘,如果還是不可用,則操作失敗並返回一個錯誤。通過timeout參數可以顯示設置超時時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章