Tài liệu tham khảo về định nghĩa chỉ mục Cloud Firestore

Cloud Firestore tự động tạo chỉ mục để hỗ trợ những chỉ mục phổ biến nhất nhưng cho phép bạn xác định chỉ mục tùy chỉnh và ghi đè chỉ mục như được mô tả trong hướng dẫn về Cloud Firestore.

Bạn có thể tạo, sửa đổi và triển khai chỉ mục tùy chỉnh trong bảng điều khiển của Firebase hoặc bằng CLI. Từ CLI, chỉnh sửa tệp cấu hình chỉ mục của bạn, với firestore.indexes.json của tên tệp mặc định, rồi triển khai bằng lệnh firebase deploy.

Bạn có thể xuất chỉ mục theo CLI bằng cách sử dụng firebase firestore:indexes.

Tệp cấu hình chỉ mục xác định một đối tượng chứa Mảng indexes và một mảng fieldOverrides (không bắt buộc). Sau đây là một ví dụ:

{
  // 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: []
    }
  ]
}

Triển khai cấu hình chỉ mục

Triển khai cấu hình chỉ mục bằng lệnh firebase deploy. Nếu bạn chỉ muốn triển khai chỉ mục cho các cơ sở dữ liệu đã định cấu hình trong dự án của bạn, hãy thêm cờ --only firestore. Vui lòng xem tài liệu tham khảo về các tuỳ chọn cho lệnh này.

Để liệt kê các chỉ mục đã triển khai, hãy chạy lệnh firebase firestore:indexes. Thêm Cờ --database=<databaseID> để liệt kê các chỉ mục cho một cơ sở dữ liệu không phải là cơ sở dữ liệu mặc định của dự án.

Nếu bạn chỉnh sửa chỉ mục bằng bảng điều khiển của Firebase, hãy đảm bảo rằng bạn cũng hãy cập nhật tệp chỉ mục cục bộ của bạn. Để biết thêm thông tin về cách quản lý chỉ mục, hãy xem Hướng dẫn về Cloud Firestore.

Định dạng JSON

Chỉ số

Giản đồ cho một đối tượng trong mảng indexes như sau. Không bắt buộc các thuộc tính được xác định bằng ký tự ?.

Xin lưu ý rằng Cloud Firestore trường tài liệu chỉ có thể được lập chỉ mục ở một chế độ, do đó, một đối tượng trường chỉ có thể chứa một trong các giá trị order, arrayConfig và Tài sản 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

Ghi đè trường

Giản đồ cho một đối tượng trong mảng fieldOverrides như sau. Không bắt buộc các thuộc tính được xác định bằng ký tự ?.

Xin lưu ý rằng Cloud Firestore trường tài liệu chỉ có thể được lập chỉ mục ở một chế độ, do đó, đối tượng trường không thể chứa cả orderarrayConfig các thuộc tính.

  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

Chính sách TTL

Bạn có thể bật hoặc tắt chính sách TTL bằng cách sử dụng mảng fieldOverrides như sau:

  // 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: []
    }
  ]

Để duy trì chế độ lập chỉ mục mặc định trong trường và bật chính sách TTL, hãy làm như sau:

{
  "fieldOverrides": [
    {
      "collectionGroup": "yourCollectionGroup",
      "fieldPath": "yourFieldPath",
      "ttl": true,
      "indexes": [
        { "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
        { "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
        { "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
      ]
    }
  ]
}

Để biết thêm thông tin về chính sách thời gian tồn tại (TTL), hãy xem lại tài liệu chính thức.