2016-02-18 70 views
1

使用elasticsearch-py,我想刪除特定索引中的所有文檔,而不刪除索引。鑑於delete_by_query已轉移到單獨的插件,我想知道什麼是最好的方式去做這件事?從python的ElasticSearch索引中刪除文檔

+0

你不能只是刪除並重新創建索引? –

+0

@ cricket_007我可以,但我寧願通過刪除文件來完成。否則,我不得不檢查索引設置和映射,並在重新創建索引時使用它們。我認爲刪除文件更容易。 – zanderle

+0

映射等的簡單備份應該不那麼困難。完整索引掃描和批量刪除似乎並不「容易」,IMO –

回答

0

使用滾動/掃描API調用收集所有文檔ID,然後調用這些ID上的批量刪除。這是根據the official documentation根據查詢API刪除的建議替代方案。

編輯:請求的信息在elasticsearch-py中具體使用。這裏是helpers的文檔。使用掃描助手掃描所有文檔。使用批量助手和刪除操作來刪除所有ID。

+0

您能否提供有關如何在elasticsearch-py中執行此操作的更多信息? – zanderle

+0

爲需要執行掃描的Python助手添加了特定文檔的鏈接,然後調用批量刪除。你需要的一切應該在那裏! –

2

通過刪除查詢來刪除所有文檔是非常低效的。更直接的和正確的操作是:

  • 獲取當前映射(假設你不使用索引模版)
  • 通過DELETE /indexname
  • 刪除索引創建新的索引和映射。

這將需要第二次,前者將採取更多,更多的時間和不必要的磁盤I/O

+0

謝謝。這是我最終做的。我會將其他答案視爲已接受,因爲它會更直接地回答問題(即使它是錯誤的方法)。 – zanderle

相關問題