GAE/Javaでデータストアの使用しなくなったインデックスを削除

Google App EngineをJavaで使っている場合のindexの削除方法

Deleting unused indexes参照
https://cloud.google.com/appengine/docs/java/config/indexconfig

Macのターミナルからappcfg.shを実行
./appengine-java-sdk/bin/appcfg.sh vacuum_indexes myapp/war

datastore-indexes.xmlまたはdatastore-indexes-auto.xmlに記載のないものを削除するかどうかひとつずつ聞かれるので返答していく。実行終了後は何もしなくてもデータストアのインデックス管理画面で削除中の表示になり、さらに待つと5分後くらいに消えた。

appcfg.shの場所
/eclipse/plugins/com.google.appengine.eclipse.sdkbundle/appengine-java-sdk/bin

フルパスまたはディレクトリを移動して./appcfg.sh vacuum_indexes myapp/war

myapp/warの方はプロジェクトのwarフォルダでOK

Permission deniedがでたらchmod +x appcfh.shで権限を付与

bin/run_java.sh: Permission deniedがでたら再度chmod +x run_java.sh

実行できると、ブラウザが起動しデータアクセスを許可する画面とコードが出でくるのでコピペで入力

********************************************************
Please enter code:

しばらくすると、どんどん聞かれる

This index is no longer in your datastore-indexes.xml file:

<datastore-index kind="RepObject" ancestor="false">
    <property name="ctgId" direction="asc"/>
    <property name="divider" direction="asc"/>
    <property name="obIndex" direction="desc"/>
</datastore-index>

Are you sure you want to delete this index? (N/y/a): y

すべて答えれば終了

vacuum_indexes completed successfully.
Success.
Cleaning up temporary files for module default...