Cloud Firestore は、最も一般的なインデックスをサポートする 使用できますが、カスタム インデックスとインデックスのオーバーライドを Cloud Firestore ガイドをご覧ください。
カスタム インデックスは Firebase コンソールで作成、変更、デプロイできます。また、
できます。CLI でインデックス構成ファイルを編集します。
デフォルトのファイル名は firestore.indexes.json
で、firebase
deploy
コマンドを使用してデプロイします。
インデックスは、CLI で firebase firestore:indexes
を使用してエクスポートできます。
インデックス構成ファイルでは、
indexes
配列とオプションの fieldOverrides
配列。
次に例を示します。
{
// Required, specify compound and vector indexes
indexes: [
{
collectionGroup: "posts",
queryScope: "COLLECTION",
fields: [
{ fieldPath: "author", arrayConfig: "CONTAINS" },
{ fieldPath: "timestamp", order: "DESCENDING" }
]
},
{
collectionGroup: "coffee-beans",
queryScope: "COLLECTION",
fields: [
{
fieldPath: "embedding_field",
vectorConfig: { dimension: 256, flat: {} }
}
]
}
],
// Optional, disable indexes or enable single-field collection group indexes
fieldOverrides: [
{
collectionGroup: "posts",
fieldPath: "myBigMapField",
// We want to disable indexing on our big map field, and so empty the indexes array
indexes: []
}
]
}
インデックス構成をデプロイする
firebase deploy
コマンドを使用してインデックス構成をデプロイします。管理者のみ
プロジェクトで構成されているデータベースのインデックスをデプロイする場合は、
--only firestore
フラグ。このコマンドのオプション リファレンスをご覧ください。
デプロイされたインデックスを一覧表示するには、firebase firestore:indexes
コマンドを実行します。追加
他のデータベースのインデックスを一覧表示するには、--database=<databaseID>
フラグを指定します。
プロジェクトのデフォルト データベースに変更できます。
Firebase コンソールを使用してインデックスを編集する場合は、 ローカル インデックス ファイルを更新します。インデックスの管理について詳しくは、このモジュールの Cloud Firestore ガイド
JSON 形式
インデックス
indexes
配列内の 1 つのオブジェクトのスキーマは次のとおりです。任意
プロパティは ?
文字で識別されます。
Cloud Firestore ドキュメント フィールドは、1 つのモードでのみインデックス登録できます。
したがって、フィールド オブジェクトには order
、arrayConfig
、
vectorConfig
プロパティ。
collectionGroup: string // Labeled "Collection ID" in the Firebase console
queryScope: string // One of "COLLECTION", "COLLECTION_GROUP"
fields: array
fieldPath: string
order?: string // One of "ASCENDING", "DESCENDING"; excludes arrayConfig and vectorConfig properties
arrayConfig?: string // If this parameter used, must be "CONTAINS"; excludes order and vectorConfig properties
vectorConfig?: object // Indicates that this is a vector index; excludes order and arrayConfig properties
dimension: number // The resulting index will only include vectors of this dimension
flat: {} // Indicates the vector index is a flat index
フィールドのオーバーライド
fieldOverrides
配列内の 1 つのオブジェクトのスキーマは次のとおりです。任意
プロパティは ?
文字で識別されます。
Cloud Firestore ドキュメント フィールドは、1 つのモードでのみインデックス登録できます。
したがって、フィールド オブジェクトに order
と arrayConfig
の両方を含めることはできません。
プロパティです。
collectionGroup: string // Labeled "Collection ID" in the Firebase console
fieldPath: string
ttl?: boolean // Set specified field to have TTL policy and be eligible for deletion
indexes: array // Use an empty array to disable indexes on this collectionGroup + fieldPath
queryScope: string // One of "COLLECTION", "COLLECTION_GROUP"
order?: string // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
arrayConfig?: string // If this parameter used, must be "CONTAINS"; excludes order property
TTL ポリシー
TTL ポリシーは、次のように fieldOverrides
配列を使用して有効または無効にできます。
// Optional, disable index single-field collection group indexes
fieldOverrides: [
{
collectionGroup: "posts",
fieldPath: "ttlField",
ttl: "true", // Explicitly enable TTL on this Field.
// Disable indexing so empty the indexes array
indexes: []
}
]
フィールドのデフォルトのインデックスを保持し、TTL ポリシーを有効にするには:
{
"fieldOverrides": [
{
"collectionGroup": "yourCollectionGroup",
"fieldPath": "yourFieldPath",
"ttl": true,
"indexes": [
{ "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
{ "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
{ "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
]
}
]
}
有効期間(TTL)ポリシーについて詳しくは、公式ドキュメントをご覧ください。