1

モデル クラスでは、ElasticSearch でインデックス付きドキュメントを削除する次のコードがあります (ドキュメントに従って)

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

rescue nilドキュメントが見つからないときにElasticSearchが発生させる404例外をキャッチするために使用しています。

問題は、例外がまだ発生していて、rescue nilコードがそれをキャッチしていないことです。

ドキュメントが存在するかどうかに関係なく、ElasticSearch でドキュメントを削除するにはどうすればよいですか?

4

2 に答える 2

3

404 エラーを無視するために、呼び出しで:ignoreパラメーターを使用できます。delete_document

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 に答える