2016-01-20 110 views
0

在一個模型類,我有以下的代碼刪除ElasticSearch的索引文件(按照documentation):如何在Rails中從elasticsearch刪除不存在的文檔?

after_commit on: [:destroy] do 
    __elasticsearch__.delete_document rescue nil 
end 

我使用rescue nil搭上404例外ElasticSearch提出時,它無法找到該文件。

問題是,異常仍然冒出來,rescue nil代碼無法捕捉它。

如何刪除ElasticSearch中的文檔,而不管它是否存在?

回答

3

您可以在delete_document調用中使用:ignore parameter以忽略404錯誤。

after_commit on: [:destroy] do 
    __elasticsearch__.delete_document ignore: 404 
end 
+0

它是否制定出適合你? – Val

0

此代碼工作正常:

after_commit on: [:destroy] do 
    __elasticsearch__.client.delete index: Dataset.index_name, type: Dataset.document_type, id: id, ignore: 404 
end 
相關問題