Firestoreの複合インデックスを削除する

公開日時

Firestoreで複数条件を指定したり、複数フィールドでのソートを行う場合、複合インデックスを作成する必要がある。

アプリケーション側の仕様変更で別の複合インデックスを利用することになり、古い複合インデックスを削除しようとしたところハマったので対応方法を残しておく。

Cloud Firestore でのインデックス管理  |  Firebase」のドキュメントを読むとFirebaseコンソールから削除できると書かれていたが、2021/8/2時点だと削除メニューを見つけられなかった。

firestore index

対応方法としてはfirebaseコマンドを使ってCLI経由で削除することができた。

  1. 既存のインデックスをローカルファイルとしてエクスポート。
yarn run -s firebase firestore:indexes > firestore.indexes.json
  1. firestore.indexes.json を編集し、不要になったインデックスを削除する

  2. インデックスをfirestoreにデプロイ

yarn run firebase deploy --only firestore:indexes

この時「ローカルファイルから消えているインデックスをFirestoreからも消して良いか?」と聞かれるので「y」を選択すれば、古い複合インデックスが削除される。

参考


Related #firebase

Firebase Functionsのスケジュール実行はローカルでは動かない

まだサポートされておらず機能リクエストがissueに挙がっている状況

_this.auth.addAuthTokenListener is not a function

8.6.5にダウングレードした

Firestoreで特定のfieldがnullのドキュメントを取得する

where('field', '==', null)で条件指定できる

Firestore エミュレータ使用時にデータをリセットする

エミュレータの場合のみ一括削除用のAPIが用意されている