Cloud Firestore는 가장 일반적인 사용할 수 있지만 커스텀 색인 및 색인 재정의를 Cloud Firestore 가이드에 설명되어 있습니다.
Firebase Console에서 커스텀 색인을 생성, 수정, 배포할 수 있습니다.
Cloud Shell을
사용하는 것이 좋습니다 CLI에서 다음 명령어를 사용하여 색인 구성 파일을 수정합니다.
기본 파일 이름은 firestore.indexes.json
이며 firebase
deploy
명령어를 사용하여 배포합니다.
firebase firestore:indexes
를 사용하여 CLI로 색인을 내보낼 수 있습니다.
색인 구성 파일은
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 Console을 사용하여 색인을 수정하는 경우 다음 작업도 수행해야 합니다. 로컬 색인 파일을 업데이트합니다. 색인 관리에 대한 자세한 내용은 다음을 참조하세요. Cloud Firestore 가이드.
JSON 형식
색인
indexes
배열에 있는 한 객체의 스키마는 다음과 같습니다. 선택 사항
속성은 ?
문자로 식별됩니다.
Cloud Firestore 문서 필드는 하나의 모드에서만 색인을 생성할 수 있습니다.
따라서 필드 객체는 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
배열에 있는 한 객체의 스키마는 다음과 같습니다. 선택 사항
속성은 ?
문자로 식별됩니다.
Cloud Firestore 문서 필드는 하나의 모드에서만 색인을 생성할 수 있습니다.
따라서 필드 객체에는 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 정책
다음과 같이 fieldOverrides
배열을 사용하여 TTL 정책을 사용 설정하거나 사용 중지할 수 있습니다.
// 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 (수명) 정책에 대한 자세한 내용은 공식 문서를 참고하세요.