如何从Rails中的elasticsearch删除不存在的文档?

时间:2016-01-20 10:32:53

标签: ruby-on-rails elasticsearch elasticsearch-model

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

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

我正在使用rescue nil来捕获ElasticSearch在无法找到文档时引发的404异常。

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

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

2 个答案:

答案 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