สร้างดัชนีที่ขาดหายไปผ่านข้อความแสดงข้อผิดพลาด
หากคุณพยายามสืบค้นแบบผสมที่มีส่วนคำสั่งช่วงที่ไม่จับคู่กับดัชนีที่มีอยู่ คุณจะได้รับข้อผิดพลาด ข้อความแสดงข้อผิดพลาดมีลิงก์โดยตรงเพื่อสร้างดัชนีที่ขาดหายไปในคอนโซล Firebase
ไปตามลิงก์ที่สร้างไปยังคอนโซล Firebase ตรวจสอบข้อมูลที่เติมโดยอัตโนมัติ แล้วคลิก สร้าง
ใช้คอนโซล Firebase
ในการสร้างดัชนีใหม่ด้วยตนเองจากคอนโซล Firebase:
- ไปที่ส่วน Cloud Firestore ของ คอนโซล Firebase
- ไปที่แท็บ ดัชนี แล้วคลิก เพิ่มดัชนี
- ป้อนชื่อคอลเลกชันและตั้งค่าฟิลด์ที่คุณต้องการสั่งซื้อดัชนี
- คลิก สร้าง
ดัชนีอาจใช้เวลาสองสามนาทีในการสร้าง ขึ้นอยู่กับขนาดของคิวรี หลังจากที่คุณสร้างแล้ว คุณสามารถดูดัชนีและสถานะได้ในส่วนดัชนีผสม หากพวกเขากำลังสร้างอยู่ คอนโซล Firebase จะมีแถบสถานะสิ่งปลูกสร้าง
ลบดัชนี
ในการลบดัชนี:
- ไปที่ส่วน Cloud Firestore ของ คอนโซล Firebase
- คลิกแท็บ ดัชนี
- วางเมาส์เหนือดัชนีที่คุณต้องการลบแล้วเลือก ลบ จากเมนูบริบท
- ยืนยันว่าคุณต้องการลบโดยคลิก ลบ จากการแจ้งเตือน
ใช้ 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 พบปัญหาเกี่ยวกับข้อมูลที่กำลังจัดทำดัชนี โดยทั่วไป หมายความว่าคุณมี ดัชนีถึงขีดจำกัด ตัวอย่างเช่น การดำเนินการอาจมีรายการดัชนีถึงจำนวนสูงสุดต่อเอกสาร
หากการสร้างดัชนีล้มเหลว คุณจะเห็นข้อความแสดงข้อผิดพลาดในคอนโซล หลังจากที่คุณตรวจสอบว่าคุณไม่ได้ทำ ดัชนีถึงขีดจำกัด ใดๆ ให้ลองดำเนินการดัชนีของคุณอีกครั้ง