Cloud Firestore でのインデックス管理

Cloud Firestore では、すべてのクエリにインデックスを使用することで、クエリのパフォーマンスを維持しています。最も基本的なクエリに必要なインデックスは、自動的に作成されます。Cloud Firestore を使用すると、アプリを使用してテストする際に、アプリで必要な追加のインデックスを簡単に作成できます。このページでは、単一フィールド インデックス複合インデックスの管理方法について説明します。

不足しているインデックスをエラー メッセージから作成する

一方、既存のインデックスに対応しない range 句で複合クエリを実行すると、エラーが発生します。このエラー メッセージに含まれている Firebase コンソールのリンクを使用すると、不足しているインデックスを作成できます。

Firebase コンソールへのリンクをクリックして、自動的に入力された情報を確認し、[作成] をクリックします。

Firebase コンソールを使用する

Firebase コンソールから手動で新しいインデックスを作成するには:

Firebase コンソールでインデックスを作成するインターフェースの画像

  1. Firebase コンソールの [Database] セクションに移動します。
  2. [インデックス] タブに移動し、[インデックスを追加] をクリックします。
  3. コレクション名を入力し、インデックスを並べ替えるフィールドを設定します。
  4. [作成] をクリックします。

クエリのサイズによっては、インデックスの作成に数分かかることがあります。完了すると、[複合インデックス] セクションにインデックスとその状態が表示されます。作成中の場合、Firebase コンソールにステータスバーが表示されます。

インデックスを削除する

インデックスを削除するには:

  1. Firebase コンソールの [Database] セクションに移動します。
  2. [インデックス] タブをクリックします。
  3. 削除するインデックスにカーソルを合わせ、コンテキスト メニューから [削除] を選択します。
  4. アラートの [削除] をクリックして、削除を確定します。

Firebase CLI を使用する

また、Firebase CLI を使用してインデックスをデプロイすることもできます。最初に、プロジェクト ディレクトリで firebase init firestore を実行します。設定中に、デフォルトのインデックスが正しい形式で含まれている JSON ファイルが Firebase CLI により生成されます。ファイルを編集してインデックスを追加し、firebase deploy コマンドでこのファイルをデプロイします。インデックスだけをデプロイする場合は、--only firestore:indexes フラグを追加します。Firebase コンソールでインデックスを編集する場合は、必ずローカル インデックス ファイルも更新してください。

インデックスの構築時間

更新が必要なデータ量によっては、インデックスの作成に数分かかる場合があります。インデックスを作成するフィールドに一致するドキュメントが多いほど、作成時間は長くなります。また、一意のコレクション ID に同時に作成できるインデックスは 1 つだけです。同じコレクション ID に複数のインデックスを作成する場合、インデックスは順番に処理されます。

インデックス構築エラー

複合インデックスと単一フィールド インデックスの例外を管理するときに、インデックス構築エラーが発生することがあります。Cloud Firestore がインデックスを作成しているデータに問題を検出すると、インデックスの作成に失敗する可能性があります。多くの場合、インデックスの上限に達すると、この問題が発生します。たとえば、オペレーションでドキュメントあたりの最大インデックス エントリ数に達した可能性があります。

インデックスの作成に失敗すると、コンソールにエラー メッセージが表示されます。インデックスの制限に達していないことを確認した後、インデックス オペレーションを再試行します。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。