Firestore(Datastore mode)のKindのエンティティを一括削除したい場合、昔はコンソールのDatastore Adminから実行することが出来ましたが、現在はCloud DataflowのDatastore Bulk Deleteテンプレートを使用する手順となっています。
本記事ではCloud DataflowのDatastore Bulk Deleteテンプレートを使用して、一度に全Kindの全てのエンティティを削除する方法を記します。
手順
-
コンソールのDataflow→「ジョブ」画面から「テンプレートからジョブを作成」をクリック
-
必要パラメータを入力
- ジョブ名: 任意 - リージョン: Firestoreのリージョンを選択 - Dataflowテンプレート: Bulk Delete Entities in Datastore - GQL Query: `SELECT * WHERE __key__ < Key(__Stat, '0')` - Read data from Datastore Project Id of: 削除したいFirestoreのプロジェクトID - Delete all matching entities from the GQL Query present in this Datastore Project IdRead data from Datastore Project id...: 同上 - 一時的なロケーション: 適当なGCSバケット作ってそのパス+プレフィクス(任意)を指定 -
「ジョブを実行」をクリック
以上です。
GQLにKindlessクエリというKindを指定しないクエリを指定するのがミソです。
WHERE句は未指定だと統計用Kindを削除しに行って The kind "__Stat_Kind_CompositeIndex__" is reserved
というエラーが出るので、それを避ける為のおまじないです^^