ข้อมูลอ้างอิงเกี่ยวกับคำจำกัดความดัชนีใน Cloud Firestore

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) ในเอกสารอย่างเป็นทางการ