Cloud Firestore 색인 정의 참조

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 문서 필드는 하나의 모드에서만 색인을 생성할 수 있습니다. 따라서 필드 객체에는 orderarrayConfig를 모두 포함할 수 없습니다. 속성

  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 (수명) 정책에 대한 자세한 내용은 공식 문서를 참고하세요.