2013-05-14 27 views
14

我使用指定的文檔類型「mytype」創建索引「myindex」。我可以刪除索引,但似乎「mytype」仍然存在,而不受索引限制。如何刪除elasticsearch中的文檔類型?

我該如何擺脫「mytype」?

+0

如果您刪除索引,則關聯的類型也會被刪除,它們不能在沒有索引的情況下存在。是什麼讓你認爲「mytype」仍然存在? – mguillermin 2013-05-14 15:28:36

+0

在「頭」插件,我可以去「瀏覽器」,看到「mytype」列在「類型」 – Rolando 2013-05-14 18:13:24

+0

奇怪。映射屬於索引的類型和類型。如果你刪除索引,你就會失去它們。你確定使用刪除API刪除了索引嗎? – javanna 2013-05-14 18:31:35

回答

40

如果您確實刪除了索引,則此索引中的映射不應再存在。 您的羣集中是否有其他類似名稱的索引?

要回答的問題:How to delete document types in elasticsearch?,使用Delete Mapping API

curl -XDELETE http://localhost:9200/index/type 

編輯:從elasticsearch 2.0,這將是不可能的了。見Mapping changes。您將不得不安裝Delete By Query plugin並運行一個將刪除文檔的查詢,但映射仍然存在。因此,最好將文檔重新索引到另一個索引而不使用舊類型。

但作爲@mguillemin和@javanna說,當你刪除索引,每個映射連接到該指數也將被刪除:

curl -XDELETE http://localhost:9200/index 
+0

我能夠通過捲曲和感覺做到這一點,但我怎樣才能刪除使用python客戶端的elasticsearch類型,但我能夠使用刪除功能刪除一個類型的文檔。 – 2015-05-12 13:00:19

+0

我編輯了elasticsearch 2.0的初始答案。 – dadoonet 2015-09-18 09:41:37

+0

通過查詢插件刪除的鏈接應該是https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugins-delete-by-query.html – 2016-05-04 16:54:45

1

在彈性搜索的最新版本,不再支持刪除文件類型。它在documentation中提到

不再可能刪除某個類型的映射。相反,您應該刪除索引並使用新的映射重新創建索引。

1

您可以使用_delete_by_query路徑來刪除類型。

POST index-name/type-name/_delete_by_query 
{ 
    "query": { 
     "match": { 
      "message": "some message" 
     } 
    } 
} 
1

您甚至不需要指定請求正文。只是

curl -XPOST http://<host>:9200/<index>/<type>/_delete_by_query 
相關問題