2016-01-20 98 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