จัดการดัชนี

หน้านี้จะอธิบายวิธีจัดการดัชนี ดูข้อมูลเพิ่มเติมเกี่ยวกับดัชนีได้ที่ภาพรวมของดัชนี

ก่อนเริ่มต้น

ก่อนที่จะสร้างดัชนีใน Cloud Firestore ได้ โปรดตรวจสอบว่าคุณได้รับมอบหมายบทบาทใดบทบาทหนึ่งต่อไปนี้

  • roles/datastore.owner
  • roles/datastore.indexAdmin
  • roles/editor
  • roles/owner

หากต้องการมอบบทบาท โปรดดูหัวข้อมอบบทบาทเดียว ดูข้อมูลเพิ่มเติมเกี่ยวกับบทบาท Cloud Firestore และสิทธิ์ที่เกี่ยวข้องได้ที่บทบาทที่กำหนดไว้ล่วงหน้า

หากคุณกำหนดบทบาทที่กำหนดเองไว้ ให้มอบหมายสิทธิ์ต่อไปนี้ทั้งหมดเพื่อสร้างดัชนี

  • datastore.indexes.create
  • datastore.indexes.delete
  • datastore.indexes.get
  • datastore.indexes.list
  • datastore.indexes.update

สร้างดัชนี

หากต้องการสร้างดัชนี ให้ทำตามขั้นตอนต่อไปนี้

MongoDB API

ใช้เมธอด createIndex() เพื่อสร้างดัชนี เช่น

  •   db.restaurants.createIndex({"cuisine" : 1})
      
  •   db.restaurants.createIndex({"cuisine" : 1}, {sparse: true})
      
  • นอกจากนี้ยังรองรับการสร้างดัชนีด้วย db.runCommand() โดยมีดัชนีได้สูงสุด 1 รายการ

      db.runCommand({"createIndexes":"restaurant", "indexes": [{"key": {"cuisine":1}, "name": "cuisine_index"}]})
      

โปรดทราบข้อจำกัดต่อไปนี้

คอนโซล Firebase
  1. ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. เลือกฐานข้อมูลจากรายการฐานข้อมูล
  3. ในแท็บดัชนี ให้คลิกสร้างดัชนี
  4. ป้อนรหัสคอลเล็กชัน
  5. เพิ่มเส้นทางฟิลด์อย่างน้อย 1 รายการ แล้วเลือกตัวเลือกดัชนีสำหรับแต่ละรายการ
  6. เลือกตัวเลือกการแสดงฟิลด์ ไม่ว่าจะเป็นแบบไม่กระจัดกระจายหรือกระจัดกระจาย
  7. คุณสามารถตั้งค่าตัวเลือกดัชนีแบบหลายคีย์ได้ (ไม่บังคับ)
  8. คลิกสร้าง
  9. ดัชนีใหม่จะแสดงในรายการดัชนี และ Cloud Firestore จะเริ่มสร้างดัชนี เมื่อสร้างดัชนีแล้ว คุณจะเห็นเครื่องหมายถูกสีเขียวข้างดัชนี หากไม่ได้สร้างดัชนี โปรดดูสาเหตุที่เป็นไปได้ในหัวข้อข้อผิดพลาดในการสร้างดัชนี
gcloud CLI

หากต้องการสร้างดัชนี ให้ใช้คำสั่ง gcloud firestore indexes composite create ตั้งค่า api-scope เป็น mongodb-compatible-api

gcloud firestore indexes composite create \
--database='DATABASE_ID' \
--collection-group=COLLECTION \
--field-config=FIELD_CONFIGURATION \
--query-scope=collection-group \
--density=dense \
--api-scope=mongodb-compatible-api

แทนที่ค่าต่อไปนี้

  • DATABASE_ID: รหัสฐานข้อมูล
  • COLLECTION: ชื่อคอลเล็กชัน
  • FIELD_CONFIGURATION: การกำหนดค่าฟิลด์ เพิ่ม --field-config=field-path= สำหรับแต่ละช่อง เช่น
        --field-config=field-path=user-id,order=descending \
        --field-config=field-path=score,order=descending
        

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าช่องเหล่านี้ได้ที่ --field-config

หากต้องการสร้างดัชนีแบบกระจัดกระจาย ให้ตั้งค่า --density=sparse-any

หากต้องการสร้างดัชนีแบบหลายคีย์ ให้เพิ่มแฟล็ก --multikey

หากต้องการสร้างดัชนีที่ไม่ซ้ำกัน ให้เพิ่มแฟล็ก --unique

Terraform

ใช้ทรัพยากร google_firestore_index และตั้งค่า api_scope เป็น MONGODB_COMPATIBLE_API และ query_scope เป็น COLLECTION_GROUP

resource "google_firestore_index" "index" {
  database    = "DATABASE_ID"
  collection  = "COLLECTION"
  api_scope   = "MONGODB_COMPATIBLE_API"
  query_scope = "COLLECTION_GROUP"

  // You can include multiple field blocks
  fields {
    field_path = "FIELD_PATH"
    order      = "ORDER"
  }

  // Optional
  multikey = true
  density  = "DENSITY"
}

แทนที่ค่าต่อไปนี้

  • DATABASE_ID: รหัสฐานข้อมูลสำหรับฐานข้อมูลที่คุณเลือก
  • COLLECTION: ชื่อคอลเล็กชันที่จะจัดทำดัชนี
  • FIELD_PATH: ชื่อของฟิลด์ที่จะจัดทำดัชนี
  • ORDER: ASCENDING หรือ DESCENDING อย่างใดอย่างหนึ่ง
  • DENSITY: SPARSE_ANY หรือ DENSE อย่างใดอย่างหนึ่ง

สร้างดัชนีข้อความ

สร้างดัชนีข้อความหากต้องการค้นหาข้อความสำหรับสตริงที่เฉพาะเจาะจงภายในคอลเล็กชัน

หากต้องการสร้างดัชนีข้อความสำหรับคอลเล็กชัน ให้ทำตามขั้นตอนต่อไปนี้

MongoDB API

ใช้เมธอด createIndex() เพื่อสร้างดัชนีข้อความ ในตัวอย่างต่อไปนี้ เมื่อมีการเขียนเอกสารลงในคอลเล็กชัน cities โดยมีข้อมูลในช่อง country หรือ food ระบบจะจัดทำดัชนีช่องเหล่านี้เพื่อวัตถุประสงค์ในการค้นหา

db.cities.createIndex({"country": "text", "food": "text"})

ฟิลด์ต้องเป็นสตริงหรืออาร์เรย์ของสตริงที่จะจัดทำดัชนี ดัชนีอาร์เรย์จะไม่ได้รับการจัดทำดัชนีการค้นหา ด้วยเหตุนี้ การจัดทำดัชนี a.1.b จะจัดทำดัชนี something ใน {a: {1: {b: something}}} แต่จะไม่จัดทำดัชนีใน {a: [one, {b: something}]}

นอกจากนี้ คุณยังสร้างดัชนีด้วย db.runCommand() ได้ด้วย คุณสามารถมีดัชนีข้อความได้เพียง 1 รายการต่อคอลเล็กชัน แต่สามารถสร้างดัชนีหลายรายการที่มีประเภทแตกต่างกันใน db.runCommand() เดียวได้ ตัวอย่างต่อไปนี้ใช้ db.runCommand() เพื่อสร้างดัชนีข้อความ

db.runCommand({
  createIndexes: "cities",
  indexes: [
    {
      key: { "country": "text", "food": "text" },
      name: "country_text_food_text"
    }
  ]
})

ระบุภาษาเริ่มต้น

นอกจากนี้ คุณยังระบุภาษาเริ่มต้นหรือเส้นทางฟิลด์ในเอกสารที่จะมีภาษาเริ่มต้นได้ด้วย

ในตัวอย่างต่อไปนี้ myLanguageField ได้รับการระบุเป็น language_override เมื่อเอกสารในคอลเล็กชัน cities มีช่องชื่อ myLanguageField ระบบจะใช้ค่าของช่องนั้นเพื่อกำหนดภาษาสำหรับการจัดทำดัชนีช่อง country สำหรับเอกสารนั้นๆ ค่าดังกล่าวจะลบล้างภาษาเริ่มต้นของ french

db.cities.createIndex({"country": "text"}, {"default_language": "french", "language_override": "myLanguageField"})
  • คุณสามารถป้อนภาษาเป็นชื่อแบบยาว (english) หรือรหัสภาษา ISO แบบ 2 ตัวอักษร (en) ก็ได้
  • หากไม่ได้ตั้งค่าภาษาเริ่มต้นไว้ Cloud Firestore จะใช้ภาษาอังกฤษเป็นค่าเริ่มต้น
  • ช่องการลบล้างภาษาต้องเป็นช่องระดับบนสุด หากไม่ได้ตั้งค่าไว้ ช่องการลบล้างภาษาจะมีค่าเริ่มต้นเป็น language
  • หากคุณตั้งค่าภาษาเริ่มต้นเป็นอักขระ null Cloud Firestore จะไม่ใช้ช่องใดๆ เป็นการลบล้างภาษา

ขยายเพื่อดูรายการภาษาที่รองรับ

รหัสภาษา ชื่อภาษา
"und" ตรวจหาอัตโนมัติ
"af" อาฟรีกานส์
"ak" อะคัน
"sq" แอลเบเนีย
"am" อัมฮาริก
"ar" อาหรับ
"hy" อาร์เมเนีย
"az" อาเซอร์ไบจาน
"eu" บาสก์
"be" เบลารุส
"bn" บังคลา
"bs" บอสเนีย
"bg" บัลแกเรีย
"my" พม่า
"ca" คาตาลัน
"ceb" เซบู
"chr" เชอโรกี
"zh" จีน
"zh-Hant" จีน (ตัวเต็ม)
"hr" โครเอเชีย
"cs" เช็ก
"da" เดนมาร์ก
"nl" ดัตช์
"th" อังกฤษ
"eo" เอสเปอแรนโต
"et" เอสโตเนีย
"fil" ฟิลิปปินส์
"fi" ฟินแลนด์
"th" ฝรั่งเศส
"gl" กาลิเชียน
"ka" จอร์เจีย
"de" เยอรมัน
"el" กรีก
"gu" คุชราต
"ht" Haitian_Creole
"ฮ่า" เฮาซา
"haw" ฮาวายเอี้ยน
"iw" ฮีบรู
"สวัสดี" ฮินดี
"hmn" ม้ง
"hu" ฮังการี
"is" ไอซ์แลนด์
"ig" อิกโบ
"id" อินโดนีเซีย
"ga" ไอร์แลนด์
"it" อิตาลี
"ja" ญี่ปุ่น
"jv" ชวา
"kn" กันนาดา
"kk" คาซัค
"km" เขมร
"ko" เกาหลี
"lo" ลาว
"la" ละติน
"lv" ลัตเวีย
"lt" ลิทัวเนีย
"lb" ลักเซมเบิร์ก
"mk" มาซิโดเนีย
"mg" มาลากาซี
"ms" มาเลย์
"ml" มาลายาลัม
"mt" มอลตา
"mi" เมารี
"mr" มราฐี
"mfe" มอริสเยน
"mn" มองโกเลีย
"sr-ME" Serbian_Montenegro
"ne" เนปาล
"ไม่" นอร์เวย์
"ny" เนียนจา
"หรือ" โอเดีย
"fa" เปอร์เซีย
"pl" โปแลนด์
"pt-BR" โปรตุเกส (บราซิล)
"pt-PT" โปรตุเกส (โปรตุเกส)
"pa" ปัญจาบ
"ro" โรมาเนีย
"ru" รัสเซีย
"gd" กาลิคของสกอตแลนด์
"sr" เซอร์เบียน
"st" โซโทใต้
"si" สิงหล
"sk" สโลวัก
"sl" สโลวีเนีย
"so" โซมาลี
"es" สเปน
"su" ซุนดา
"sw" สวาฮิลี
"sv" สวีเดน
"tg" ทาจิก
"ta" ทมิฬ
"te" เตลูกู
"th" ไทย
"tr" ตุรกี
"uk" ยูเครน
"ur" อูรดู
"uz" อุซเบกิสถาน
"vi" เวียดนาม
"cy" เวลส์
"yi" ยิดดิช
"yo" โยรูบา
"zu" ซูลู

แบ่งพาร์ติชันดัชนีข้อความ

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

หากต้องการสร้างดัชนีที่มีพาร์ติชัน ให้กำหนดค่าช่อง firestoreOptions ดังนี้

db.runCommand({
  createIndexes: "cities",
  indexes: [
    {
      key: { "country": "text", "food": "text"},
      name: "country_text_food_text"
      firestoreOptions: {"customPartitionFields": ["PARTITIONED_FIELD"]
    }
  ]
})

สถานที่:

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

    พาร์ติชันต้องมีเพียงช่องเดียว หากแบ่งพาร์ติชันดัชนี คุณจะเรียกใช้ได้เฉพาะการค้นหาที่ระบุฟิลด์ที่แบ่งพาร์ติชันไว้เท่านั้น

ข้อจำกัด

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. เลือกฐานข้อมูลจากรายการฐานข้อมูล

  3. ในแท็บดัชนี ให้คลิกสร้างดัชนี

  4. ป้อนรหัสคอลเล็กชัน

  5. เพิ่มเส้นทางฟิลด์อย่างน้อย 1 รายการ แล้วเลือกตัวเลือกดัชนีสำหรับแต่ละรายการ

  6. คลิกสร้าง

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

gcloud CLI

หากต้องการสร้างดัชนีข้อความ ให้ใช้คำสั่ง gcloud firestore indexes composite create ตั้งค่า --api-scope เป็น mongodb-compatible-api

gcloud firestore indexes composite create \
  --database='DATABASE_ID' \
  --collection-group=COLLECTION_GROUP \
  --field-config=field-path=FIELD_NAME,search-config='{"text-spec": {"index-specs": [{"index-type": "tokenized", "match-type": "match-globally"}]}}' \
  --api-scope=mongodb-compatible-api \
  --search-index-options=text-language=en \
  --async

แทนที่ค่าต่อไปนี้

  • DATABASE_ID: รหัสฐานข้อมูล
  • COLLECTION_GROUP: รหัสของคอลเล็กชันที่จะจัดทำดัชนี
  • FIELD_NAME: ชื่อของช่องที่จะจัดทำดัชนี

แฟล็ก --async จะเรียกใช้การดำเนินการสร้างดัชนีในเบื้องหลัง

สร้างดัชนี 2dsphere

สร้างดัชนี 2dsphere เพื่อทำการค้นหาเชิงพื้นที่และค้นหาเอกสารที่มีอยู่ภายในช่วงที่กำหนดจากลองจิจูดและละติจูดที่เฉพาะเจาะจง

หากต้องการสร้างดัชนี 2dsphere สำหรับคอลเล็กชัน ให้ทำตามขั้นตอนต่อไปนี้

MongoDB API

ใช้เมธอด createIndex() เพื่อสร้างดัชนี เช่น

db.restaurants.createIndex({"location" : "2dsphere", "region": "2dsphere"})

นอกจากนี้ยังรองรับการสร้างดัชนีด้วย db.runCommand() โดยมีดัชนีได้สูงสุด 1 รายการ ดังนี้

db.runCommand({
  createIndexes: "restaurants",
  indexes: [
    {
      key: { "location": "2dsphere", "region": "2dsphere" },
      name: "location_2dsphere_region_2dsphere"
    }
  ]
})

แบ่งพาร์ติชันดัชนี 2dsphere

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

หากต้องการสร้างดัชนีที่มีพาร์ติชัน ให้กำหนดค่าช่อง firestoreOptions ดังนี้

db.runCommand({
  createIndexes: "restaurants",
  indexes: [
    {
      key: { "location": "2dsphere", "region": "2dsphere" },
      name: "location_2dsphere_region_2dsphere"
      firestoreOptions: {"customPartitionFields": ["PARTITIONED_FIELD"]
    }
  ]
})

สถานที่:

  • PARTITIONED_FIELD คือชื่อของช่องที่ใช้สำหรับพาร์ติชัน เมื่อเรียกใช้การค้นหากับดัชนีที่แบ่งพาร์ติชัน คุณจะกรองผลลัพธ์ตามค่าของช่องนี้ได้ เช่น หากดัชนีมีช่อง region สำหรับสถานที่ตั้งระดับภูมิภาค คุณสามารถแบ่งพาร์ติชันดัชนีโดยใช้ region เพื่อให้ผู้ใช้ค้นหาร้านอาหารในภูมิภาคของตนได้

    หากแบ่งพาร์ติชันดัชนี คุณจะเรียกใช้การค้นหาได้เฉพาะในกรณีที่มีการระบุฟิลด์ที่แบ่งพาร์ติชันไว้เท่านั้น

ข้อจำกัด

คอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. เลือกฐานข้อมูลจากรายการฐานข้อมูล

  3. ในแท็บดัชนี ให้คลิกสร้างดัชนี

  4. ป้อนรหัสคอลเล็กชัน

  5. เพิ่มเส้นทางฟิลด์อย่างน้อย 1 รายการ แล้วเลือกตัวเลือกดัชนีสำหรับแต่ละรายการ

  6. คลิกสร้าง

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

gcloud CLI

หากต้องการสร้างดัชนี 2dsphere ให้ใช้คำสั่ง gcloud firestore indexes composite create ตั้งค่า --api-scope เป็น mongodb-compatible-api

gcloud firestore indexes composite create \
  --database='DATABASE_ID' \
  --collection-group=COLLECTION_GROUP \
  --field-config=field-path=FIELD_NAME,search-config='{"geo-spec": {}}' \
  --api-scope=mongodb-compatible-api \
  --async

แทนที่ค่าต่อไปนี้

  • DATABASE_ID: รหัสฐานข้อมูล
  • COLLECTION_GROUP: รหัสของคอลเล็กชันที่จะจัดทำดัชนี
  • FIELD_NAME: ชื่อของช่องที่จะจัดทำดัชนี

แฟล็ก --async จะเรียกใช้การดำเนินการสร้างดัชนีในเบื้องหลัง

ลบดัชนี

หากต้องการลบดัชนี ให้ทำตามขั้นตอนต่อไปนี้

MongoDB API

ใช้เมธอด dropIndex() เพื่อลบดัชนี เช่น

ลบดัชนีโดยใช้ชื่อดัชนี

db.restaurants.dropIndex("cuisine_index")

ลบดัชนีโดยใช้คำจำกัดความของดัชนี

db.restaurants.dropIndex({"cuisine" : 1})
คอนโซล Firebase
  1. ในคอนโซล Firebase ให้ไปที่หน้าฐานข้อมูล Firestore

    ไปที่ฐานข้อมูล Firestore

  2. เลือกฐานข้อมูลจากรายการฐานข้อมูล
  3. คลิกแท็บดัชนี
  4. ในรายการดัชนี ให้เลือกลบจากปุ่มเพิ่มเติม สำหรับดัชนีที่ต้องการลบ
  5. คลิกลบดัชนี
gcloud CLI
  1. หากต้องการค้นหาชื่อดัชนี ให้ใช้คำสั่ง gcloud firestore indexes composite list

    gcloud firestore indexes composite list \
    --database='DATABASE_ID'

    แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูล

  2. หากต้องการลบดัชนี ให้ใช้คำสั่ง gcloud firestore indexes composite delete

    gcloud firestore indexes composite delete INDEX_NAME \
    --database='DATABASE_ID'

    แทนที่ค่าต่อไปนี้

    • INDEX_NAME: ชื่อของดัชนี
    • DATABASE_ID: รหัสฐานข้อมูล

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

หากต้องการสร้างดัชนี Cloud Firestore ต้องสร้างดัชนีแล้วทดแทนรายการดัชนีด้วยข้อมูลที่มีอยู่ เวลาที่ใช้ในการสร้างดัชนีจะขึ้นอยู่กับสิ่งต่อไปนี้

  • เวลาในการสร้างดัชนีขั้นต่ำคือ 2-3 นาที แม้จะเป็นฐานข้อมูลที่ว่างเปล่าก็ตาม

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

จัดการการดำเนินการที่ใช้เวลานาน

การสร้างดัชนีเป็นการดำเนินการที่ใช้เวลานาน ส่วนต่อไปนี้จะอธิบายวิธีทำงานกับการดำเนินการที่ใช้เวลานานสำหรับดัชนี

หลังจากที่คุณเริ่มสร้างดัชนี Cloud Firestore จะกำหนดชื่อที่ไม่ซ้ำกันให้กับการดำเนินการ ชื่อการดำเนินการจะขึ้นต้นด้วย projects/PROJECT_ID/databases/DATABASE_ID/operations/ เช่น

projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

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

แสดงรายการการดำเนินการที่ใช้เวลานานทั้งหมด

หากต้องการแสดงรายการการดำเนินการที่ใช้เวลานาน ให้ใช้คำสั่ง gcloud firestore operations list คำสั่งนี้จะแสดงรายการการดำเนินการที่กำลังดำเนินอยู่และเพิ่งเสร็จสิ้น ระบบจะแสดงการดำเนินการเป็นเวลา 2-3 วันหลังจากเสร็จสิ้น ดังนี้

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 ในการตอบกลับ แสดงว่าการดำเนินการยังไม่เสร็จสมบูรณ์