よしだのブログ

サブタイトルはありません。

Amazon CloudSearch 用 deleteByQuery を書きました。

f:id:yoshi0309:20140424211938j:plain

どうも!だいぶ間が空きました。。

Amazon CloudSearch で色々やっていると、まとめてドキュメントを削除したくなることってありませんか?例えば、ドメインを削除せずに、ドキュメントだけ全て消したい、など。ドメインを作り直すのが確実ではあるのですが、ドメインの作りなおしには、とても時間がかかります。また、ドキュメントを削除するにしても、ID を一個ずつ JSON にリストしていかないといけないので、なかなか面倒な作業です。

そこで、エンジニアらしく、ドキュメントを削除するスクリプトを書きました。設定した検索条件にマッチしたドキュメントを全て削除します!超便利。*1

delete documents by query result for Amazon CloudS ...

利用時には、スクリプトの先頭に記載してある、ENDPOINT を自分のドメインのものに修正してください。その後、最後の main 関数にある、検索条件を修正して実行してください。なお、Python 2.6 で動作することは確認しました。テストはしてません(笑)。

なお、全件削除ですが、必ず全件ヒットする検索条件が見つけられていないので、できません。インデックスの設定上、必ず固定の値が特定のフィールドに入る、など全件引っ掛けることができるようなフィールドがあれば、それに対して条件をかけることがいいかと思います。

訂正 05/28 : 全件削除できるクエリが有りました! lucene パーサーは盲点でした。。ご指摘ありがとうございます!

ご意見、ご質問、なんでもお待ちしています。 ご参考まで!

*1:自画自賛