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