GAE/J使いの為のインデックス削除ツール

pythonで開発している場合は appcfg.py vacuum_indexes があるからデータストア上のインデックスの削除が行えるんですが、Java版のSDKにはまだその手のツールが無いので困ります。
そこで普段はJavaしか使わない人でも、ツールだけはPython版を使ってEclipseから簡単にインデックス削除を行えるようにしてみました。*1

  1. まずGoogle App Engine SDK for Pythonを入れて置く必要があります。もちろんPythonも。
  2. Eclipseのプロジェクト内に以下のようなダミーのアプリケーションディレクトリを作成しapp.yamlとvacuum_indexes.batを作成します。
  3. 消したいインデックスが出来てしまったら vacuum_indexes.bat を実行すれば不要なインデックスの削除が出来ます。

ファイルセット


  • app.yaml
    • applicationには自分のアプリケーションIDを書いておきます。
    • versionは何でも良いのですが、万が一にも空のアプリをデプロイしてしまうという事故の防止の為、本番と被らないバージョンにしておきます。
    • 今回の場合handlersは要らないんですが必須項目なので形だけのダミー設定設定を書いておきます。ダミー設定なのでdummyというファイルは不要です。
application: example
version: 9999
runtime: python
api_version: 1

handlers:
- url: /
  script: dummy
@echo off
cd /D %~dp0
appcfg.py vacuum_indexes .
pause

実行例

上記のファイルセットが出来たら後はEclipseからvacuum_indexes.batをダブルクリック(DefaultEditorで開いてやる)だけでいつでもインデックスの削除が出来ます。
バッチファイルを実行するといきなりインデックスを削除するのではなく、サーバとの差分のインデックスが順番に列挙されるのでそれぞれに (N/y/a) を答えて削除するという形になります。今回 index.yaml は作っていないのでサーバ上の全てのインデックスが列挙された状態になっています。間違って必要なインデックスを削除しないように注意しましょう。

*1:開発環境がLinuxMacだとコターミナルを自然に使うので不要かもしれないけど、Windowsだとはっぱダブルクリックで解決したくなるよね?