1

在模型类中,我有以下代码来删除 ElasticSearch 中的索引文档(根据文档):

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

rescue nil用来捕获 ElasticSearch 在找不到文档时引发的 404 异常。

问题是异常仍然冒泡,rescue nil代码没有捕捉到它。

如何删除 ElasticSearch 中的文档,无论它是否存在?

4

2 回答 2

3

您可以在调用中使用该:ignore参数delete_document以忽略 404 错误。

after_commit on: [:destroy] do
  __elasticsearch__.delete_document ignore: 404
end
于 2016-01-20T10:36:33.827 回答
0

此代码工作正常:

after_commit on: [:destroy] do
  __elasticsearch__.client.delete index: Dataset.index_name, type: Dataset.document_type, id: id, ignore: 404
end
于 2016-01-20T12:37:50.150 回答