Amazon CloudSearch 用 deleteByQuery を書きました。
どうも!だいぶ間が空きました。。
Amazon CloudSearch で色々やっていると、まとめてドキュメントを削除したくなることってありませんか?例えば、ドメインを削除せずに、ドキュメントだけ全て消したい、など。ドメインを作り直すのが確実ではあるのですが、ドメインの作りなおしには、とても時間がかかります。また、ドキュメントを削除するにしても、ID を一個ずつ JSON にリストしていかないといけないので、なかなか面倒な作業です。
そこで、エンジニアらしく、ドキュメントを削除するスクリプトを書きました。設定した検索条件にマッチしたドキュメントを全て削除します!超便利。*1
delete documents by query result for Amazon CloudS ...
利用時には、スクリプトの先頭に記載してある、ENDPOINT を自分のドメインのものに修正してください。その後、最後の main 関数にある、検索条件を修正して実行してください。なお、Python 2.6 で動作することは確認しました。テストはしてません(笑)。
なお、全件削除ですが、必ず全件ヒットする検索条件が見つけられていないので、できません。インデックスの設定上、必ず固定の値が特定のフィールドに入る、など全件引っ掛けることができるようなフィールドがあれば、それに対して条件をかけることがいいかと思います。
訂正 05/28 : 全件削除できるクエリが有りました! lucene パーサーは盲点でした。。ご指摘ありがとうございます!
ご意見、ご質問、なんでもお待ちしています。 ご参考まで!
*1:自画自賛