จัดการดัชนีใน Cloud Firestore

Cloud Firestore ช่วยให้มั่นใจถึงประสิทธิภาพการสืบค้นโดยกำหนดให้มีดัชนีสำหรับทุกการสืบค้น ดัชนีที่จำเป็นสำหรับการสืบค้นข้อมูลพื้นฐานที่สุดจะ ถูกสร้างขึ้นโดยอัตโนมัติ สำหรับคุณ ในขณะที่คุณใช้และทดสอบแอปของคุณ Cloud Firestore จะสร้างข้อความแสดงข้อผิดพลาดที่ช่วยให้คุณสร้างดัชนีเพิ่มเติมที่แอปของคุณต้องการ หน้านี้อธิบายวิธีจัดการดัชนี ฟิลด์เดียว และดัชนี ผสม

สร้างดัชนีที่ขาดหายไปผ่านข้อความแสดงข้อผิดพลาด

หากคุณพยายามสืบค้นแบบผสมที่มีส่วนคำสั่งช่วงที่ไม่จับคู่กับดัชนีที่มีอยู่ คุณจะได้รับข้อผิดพลาด ข้อความแสดงข้อผิดพลาดมีลิงก์โดยตรงเพื่อสร้างดัชนีที่ขาดหายไปในคอนโซล Firebase

ไปตามลิงก์ที่สร้างไปยังคอนโซล Firebase ตรวจสอบข้อมูลที่เติมโดยอัตโนมัติ แล้วคลิก สร้าง

ใช้คอนโซล Firebase

ในการสร้างดัชนีใหม่ด้วยตนเองจากคอนโซล Firebase:

อิมเมจของอินเทอร์เฟซการจัดทำดัชนี firestore ในคอนโซล firebase

  1. ไปที่ส่วน Cloud Firestore ของ คอนโซล Firebase
  2. ไปที่แท็บ ดัชนี แล้วคลิก เพิ่มดัชนี
  3. ป้อนชื่อคอลเลกชันและตั้งค่าฟิลด์ที่คุณต้องการสั่งซื้อดัชนี
  4. คลิก สร้าง

ดัชนีอาจใช้เวลาสองสามนาทีในการสร้าง ขึ้นอยู่กับขนาดของคิวรี หลังจากที่คุณสร้างแล้ว คุณสามารถดูดัชนีและสถานะได้ในส่วนดัชนีผสม หากพวกเขากำลังสร้างอยู่ คอนโซล Firebase จะมีแถบสถานะสิ่งปลูกสร้าง

ลบดัชนี

ในการลบดัชนี:

  1. ไปที่ส่วน Cloud Firestore ของ คอนโซล Firebase
  2. คลิกแท็บ ดัชนี
  3. วางเมาส์เหนือดัชนีที่คุณต้องการลบแล้วเลือก ลบ จากเมนูบริบท
  4. ยืนยันว่าคุณต้องการลบโดยคลิก ลบ จากการแจ้งเตือน

ใช้ Firebase CLI

คุณยังสามารถปรับใช้ดัชนีด้วย Firebase CLI ในการเริ่มต้นใช้งาน ให้เรียกใช้ firebase init firestore ในไดเรกทอรีโครงการของคุณ ระหว่างการตั้งค่า Firebase CLI จะสร้างไฟล์ JSON พร้อมดัชนีเริ่มต้นในรูปแบบที่ถูกต้อง แก้ไขไฟล์เพื่อเพิ่มดัชนีและปรับใช้ด้วยคำสั่ง firebase deploy หากคุณต้องการปรับใช้ดัชนีเท่านั้น ให้เพิ่มแฟล็ก --only firestore:indexes หากคุณแก้ไขดัชนีโดยใช้คอนโซล Firebase อย่าลืมอัปเดตไฟล์ดัชนีในเครื่องด้วย อ้างถึงการ อ้างอิงคำจำกัดความดัชนี JSON

เวลาสร้างดัชนี

ในการสร้างดัชนี Cloud Firestore ต้องตั้งค่าดัชนีแล้วเติมดัชนีด้วยข้อมูลที่มีอยู่ เวลาสร้างดัชนีคือผลรวมของเวลาตั้งค่าและเวลาทดแทน:

  • การตั้งค่าดัชนีใช้เวลาสองสามนาที เวลาบิลด์ขั้นต่ำสำหรับดัชนีคือไม่กี่นาที แม้กระทั่งสำหรับฐานข้อมูลเปล่า

  • เวลาทดแทนขึ้นอยู่กับจำนวนข้อมูลที่มีอยู่ในดัชนีใหม่ ยิ่งค่าของฟิลด์ตรงกับข้อกำหนดของดัชนีมากเท่าใด ก็ยิ่งใช้เวลาในการเติมดัชนีนานขึ้นเท่านั้น

การสร้างดัชนีเป็นการ ดำเนินการระยะยาว

หลังจากที่คุณเริ่มบิลด์ดัชนี Cloud Firestore จะกำหนดชื่อที่ไม่ซ้ำให้กับการดำเนินการ ชื่อการดำเนินการนำหน้าด้วย projects/[PROJECT_ID]/databases/(default)/operations/ ตัวอย่างเช่น:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

อย่างไรก็ตาม คุณสามารถเว้นคำนำหน้าได้เมื่อระบุชื่อการดำเนินการสำหรับคำสั่ง describe

แสดงรายการการดำเนินงานระยะยาวทั้งหมด

หากต้องการแสดงรายการการดำเนินการที่ใช้เวลานาน ให้ใช้คำสั่ง รายการการดำเนินการ gcloud firestore คำสั่งนี้แสดงรายการการดำเนินการที่ดำเนินการอยู่และเพิ่งเสร็จสิ้น การดำเนินงานแสดงไว้สองสามวันหลังจากเสร็จสิ้น:

gcloud firestore operations list

ตรวจสอบสถานะการทำงาน

แทนที่จะแสดงรายการการดำเนินการที่ใช้เวลานานทั้งหมด คุณสามารถระบุรายละเอียดของการดำเนินการเดียว:

gcloud firestore operations describe operation-name

การประมาณเวลาที่เสร็จสิ้น

ขณะที่การดำเนินการของคุณทำงาน ดูค่าของ ฟิลด์ state สำหรับสถานะโดยรวมของการดำเนินการ

คำขอสถานะของการดำเนินการที่ใช้เวลานานจะส่งคืน workEstimated และ workCompleted ด้วย เมตริกเหล่านี้จะถูกส่งคืนตามจำนวนเอกสาร workEstimated แสดงจำนวนเอกสารทั้งหมดโดยประมาณที่การดำเนินการจะดำเนินการ workCompleted แสดงจำนวนเอกสารที่ประมวลผลแล้ว หลังจากการดำเนินการเสร็จสิ้น workCompleted แสดงจำนวนเอกสารทั้งหมดที่ได้รับการประมวลผลจริง ซึ่งอาจแตกต่างจากค่าของ workEstimated

แบ่ง workCompleted ตามงาน workEstimated ความคืบหน้าคร่าวๆ การประมาณค่าอาจไม่ถูกต้องเนื่องจากขึ้นอยู่กับการรวบรวมสถิติที่ล่าช้า

ตัวอย่างเช่น นี่คือสถานะความคืบหน้าของการสร้างดัชนี:

{
  "operations": [
    {
      "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
      "metadata": {
        "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
        "common": {
          "operationType": "CREATE_INDEX",
          "startTime": "2020-06-23T16:52:25.697539Z",
          "state": "PROCESSING"
        },
        "progressDocuments": {
          "workCompleted": "219327",
          "workEstimated": "2198182"
        }
       },
    },
    ...

เมื่อการดำเนินการเสร็จสิ้น คำอธิบายการดำเนินการจะมีคำ "done": true ดูค่าของ ฟิลด์ state สำหรับผลลัพธ์ของการดำเนินการ หากไม่ได้ตั้งค่าฟิลด์ done ในการตอบกลับ ค่าของฟิลด์จะเป็น false อย่าขึ้นอยู่กับการมีอยู่ของค่า done สำหรับการดำเนินการที่อยู่ระหว่างดำเนินการ

ข้อผิดพลาดในการสร้างดัชนี

คุณอาจพบข้อผิดพลาดในการสร้างดัชนีเมื่อจัดการดัชนีคอมโพสิตและการยกเว้นดัชนีฟิลด์เดียว การดำเนินการจัดทำดัชนีอาจล้มเหลวหาก Cloud Firestore พบปัญหาเกี่ยวกับข้อมูลที่กำลังจัดทำดัชนี โดยทั่วไป หมายความว่าคุณมี ดัชนีถึงขีดจำกัด ตัวอย่างเช่น การดำเนินการอาจมีรายการดัชนีถึงจำนวนสูงสุดต่อเอกสาร

หากการสร้างดัชนีล้มเหลว คุณจะเห็นข้อความแสดงข้อผิดพลาดในคอนโซล หลังจากที่คุณตรวจสอบว่าคุณไม่ได้ทำ ดัชนีถึงขีดจำกัด ใดๆ ให้ลองดำเนินการดัชนีของคุณอีกครั้ง