Cloud Firestore จะสร้างดัชนีโดยอัตโนมัติเพื่อรองรับ ประเภทข้อความค้นหา แต่อนุญาตให้คุณกำหนดดัชนีที่กำหนดเองและการแทนที่ดัชนีเป็น ที่อธิบายไว้ในคู่มือ Cloud Firestore
คุณจะสร้าง แก้ไข และทำให้ดัชนีที่กำหนดเองใช้งานได้ในคอนโซล Firebase หรือ
โดยใช้ CLI จาก CLI ให้แก้ไขไฟล์การกำหนดค่าดัชนีโดย
ชื่อไฟล์เริ่มต้น firestore.indexes.json
และทำให้ใช้งานได้โดยใช้คำสั่ง firebase
deploy
คุณส่งออกดัชนีด้วย CLI ได้โดยใช้ firebase firestore:indexes
ไฟล์การกำหนดค่าดัชนีกำหนดออบเจ็กต์ 1 รายการที่มี
อาร์เรย์ 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
ดัชนี
สคีมาของออบเจ็กต์ 1 รายการในอาร์เรย์ 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
การลบล้างช่อง
สคีมาของออบเจ็กต์ 1 รายการในอาร์เรย์ 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
นโยบาย 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" }
]
}
]
}
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบาย Time to Live (TTL) ในเอกสารอย่างเป็นทางการ