在模型类中,我有以下代码来删除ElasticSearch中的索引文档(根据documentation):
after_commit on: [:destroy] do
__elasticsearch__.delete_document rescue nil
end
我正在使用rescue nil
来捕获ElasticSearch在无法找到文档时引发的404异常。
问题是异常仍然冒泡,rescue nil
代码无法捕捉到它。
如何删除ElasticSearch中的文档,无论它是否存在?
答案 0 :(得分:3)
您可以使用delete_document
来电中的:ignore
parameter来忽略404错误。
after_commit on: [:destroy] do
__elasticsearch__.delete_document ignore: 404
end
答案 1 :(得分:0)
此代码可以正常使用:
after_commit on: [:destroy] do
__elasticsearch__.client.delete index: Dataset.index_name, type: Dataset.document_type, id: id, ignore: 404
end