05.doc_delete操作
文章目錄
- 1. Delete API(刪除接口)簡介
- 2. 并發控制
- 3. version版本
- 4. 路由
- 5. automatic index creation ( 自動創建索引 )
- 6. 分布式
- 7. wait for active shards ( 等待活動分片 )
- 8. refresh刷新
- 9. timeout 超時
1. Delete API(刪除接口)簡介
delete API允許基于指定的ID來從索引庫中刪除一個JSON文件。下面演示了從一個叫twitter的索引庫的tweet type下刪除文檔,id是1:
$ curl -XDELETE 'http://localhost:9200/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" }2. 并發控制
索引操作可以是有條件來控制的,可以控制僅在文檔的最后一次因為修改分配的_seq_no和_primary_term 參數和請求時傳進來的if_seq_no和if_primary_term參數相等的情況下才能執行操作。如果檢測到不匹配,則該操作將導致VersionConflictException和狀態碼409。有關更多詳細信息,請參見樂觀并發控制。
3. version版本
索引的每個文檔都被標記了版本。當刪除文檔時, 可以通過指定version來確保我們試圖刪除一個文檔時這個文檔是確實存在的,它在此期間并沒有改變。在文檔中執行的每個寫入操作,包括刪除,都會使其版本遞增。
4. 路由
在創建索引文檔時如果使用了控制路由的能力,為了刪除文檔,也應當提供路由值。例如:
DELETE /twitter/_doc/1?routing=kimchy以上將刪除ID為1的tweet,但會根據用戶路由。請注意,如果刪除路由值不正確,會導致文檔無法刪除。
當映射的_routing被設定為required且沒有指定的路由值時,刪除API將拋出RoutingMissingException并拒絕該請求。
5. automatic index creation ( 自動創建索引 )
如果索引庫之前沒有創建,刪除操作將自動創建一個索引庫(參見創建索引API來手動創建索引),并且如果沒有創建類型時,會根據指定的類型名與動態映射類型來自動創建類型(參見put mapping來手動創建類型映射)。
6. 分布式
刪除操作被散列到一個特定的分片id。然后它被重定向到該ID組內的主分片,和副本分片(如果需要的話)。
7. wait for active shards ( 等待活動分片 )
當進行的刪除請求,你可以設置wait_for_active_shards參數來要求必須最少達到幾個可用的分片才能開始處理刪除請求。進一步的細節和使用示例見這里。
8. refresh刷新
用來控制本次的變化能夠被搜索可見。參見:refresh。
9. timeout 超時
在執行刪除操作時,分配給執行刪除操作的主分片可能無法使用。有些方面的原因可能是主分片正在從倉庫恢復或進行搬遷。默認情況下,刪除操作在返回失敗與錯誤之前將等待1分鐘讓主分片成為可用的。該timeout參數可用于明確指定等待多長時間。這里是將其設置為5分鐘的一個示例:
DELETE /twitter/_doc/1?timeout=5m`總結
以上是生活随笔為你收集整理的05.doc_delete操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 04.elasticsearch_get
- 下一篇: 06.delete_by_query操作