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ả order
và arrayConfig
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.