इंडेक्स मैनेज करना

इस पेज पर, इंडेक्स मैनेज करने का तरीका बताया गया है. इंडेक्स के बारे में ज़्यादा जानने के लिए, इंडेक्स के बारे में खास जानकारी लेख पढ़ें.

शुरू करने से पहले

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() का इस्तेमाल करके इंडेक्स बनाने की सुविधा भी उपलब्ध है. हालांकि, इसके लिए सिर्फ़ एक इंडेक्स का इस्तेमाल किया जा सकता है.

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

इन बातों का ध्यान रखें:

  • हर अनुरोध के लिए, सिर्फ़ एक इंडेक्स बनाया जा सकता है. db.collection.createIndexes() का इस्तेमाल नहीं किया जा सकता.
  • MongoDB API की मदद से इंडेक्स बनाने के लिए, ऑडिट लॉग में google.firestore.admin.v1.FirestoreAdmin.CreateIndex तरीके का नाम इस्तेमाल किया जाता है.
  • इंडेक्स के साथ काम करने वाले विकल्पों के बारे में जानने के लिए, इंडेक्स और इंडेक्स प्रॉपर्टी देखें.
Firebase कंसोल
  1. Firebase कंसोल में, Firestore डेटाबेस पेज पर जाएं.

    Firestore डेटाबेस पर जाएं

  2. डेटाबेस की सूची में से कोई डेटाबेस चुनें.
  3. इंडेक्स टैब में, इंडेक्स बनाएं पर क्लिक करें.
  4. कलेक्शन आईडी डालें.
  5. एक या उससे ज़्यादा फ़ील्ड पाथ जोड़ें और हर फ़ील्ड पाथ के लिए इंडेक्स का विकल्प चुनें.
  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 को इंडेक्स करने पर, {a: {1: {b: something}}} में something इंडेक्स हो जाएगा, लेकिन {a: [one, {b: something}]} में नहीं.

db.runCommand() का इस्तेमाल करके भी इंडेक्स बनाए जा सकते हैं. हर कलेक्शन के लिए, सिर्फ़ एक टेक्स्ट इंडेक्स बनाया जा सकता है. हालांकि, एक 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) या दो अक्षरों वाले आईएसओ भाषा कोड (en) के तौर पर डाला जा सकता है.
  • अगर डिफ़ॉल्ट भाषा सेट नहीं की जाती है, तो Cloud Firestore डिफ़ॉल्ट रूप से अंग्रेज़ी पर सेट होता है.
  • भाषा बदलने वाला फ़ील्ड, टॉप-लेवल का फ़ील्ड होना चाहिए. अगर इसे सेट नहीं किया जाता है, तो भाषा बदलने वाले फ़ील्ड की वैल्यू डिफ़ॉल्ट रूप से language पर सेट होती है.
  • अगर आपने डिफ़ॉल्ट भाषा के तौर पर null वर्ण सेट किया है, तो null किसी भी फ़ील्ड को भाषा बदलने के तौर पर इस्तेमाल नहीं करता.Cloud Firestore

इस्तेमाल की जा सकने वाली भाषाओं की सूची देखने के लिए, इस सेक्शन को बड़ा करें

भाषा कोड भाषा का नाम
"und" अपने-आप पता लगाएं
"af" अफ़्रीकान्स
"ak" आकान
"sq" अल्बेनियन
"am" ऐमहैरिक
"ar" ऐरेबिक
"hy" आर्मीनियन
"az" अज़रबैजानी
"eu" बैस्क
"be" बेलारूसी
"bn" बांग्ला
"bs" बोस्नियन
"bg" बल्गैरियन
"my" बर्मीज़
"ca" कैटलैन
"ceb" सेबुआनो
"chr" चेरोकी
"zh" चाइनीज़
"zh-Hant" Chinese_Traditional
"hr" क्रोएशियन
"cs" चेक
"da" डेनिश
"nl" डच
"en" अंग्रेज़ी
"eo" एस्पेरेंटो
"et" एस्टोनियन
"fil" फ़िलिपिनो
"fi" फ़िनिश
"fr" फ़्रेंच
"gl" गैलिशियन
"ka" जॉर्जियन
"de" जर्मन
"el" ग्रीक
"gu" गुजराती
"ht" Haitian_Creole
"ha" हाउसा
"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" Portuguese_Brazil
"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 फ़ील्ड तय किया गया है, तो उपयोगकर्ता किसी शहर के बारे में क्वेरी कर सकते हैं.

    पार्टिशन सिर्फ़ एक फ़ील्ड होना चाहिए. किसी इंडेक्स को बांटने पर, सिर्फ़ ऐसी क्वेरी चलाई जा सकती हैं जिनमें बांटे गए फ़ील्ड की जानकारी दी गई हो.

सीमाएं

  • हर अनुरोध के लिए, सिर्फ़ एक इंडेक्स बनाया जा सकता है.
  • MongoDB API की मदद से इंडेक्स बनाने के लिए, ऑडिट लॉग में google.firestore.admin.v1.FirestoreAdmin.CreateIndex नाम के तरीके का इस्तेमाल किया जाता है.
  • इंडेक्स करने के लिए उपलब्ध विकल्पों के बारे में जानने के लिए, इंडेक्स और इंडेक्स प्रॉपर्टी देखें.

Firebase कंसोल

  1. Firebase कंसोल में, Firestore डेटाबेस पेज पर जाएं.

    Firestore डेटाबेस पर जाएं

  2. डेटाबेस की सूची में से कोई डेटाबेस चुनें.

  3. इंडेक्स टैब में, इंडेक्स बनाएं पर क्लिक करें.

  4. कलेक्शन आईडी डालें.

  5. एक या उससे ज़्यादा फ़ील्ड पाथ जोड़ें और हर फ़ील्ड पाथ के लिए इंडेक्स का विकल्प चुनें.

  6. बनाएं पर क्लिक करें.

  7. आपका नया इंडेक्स, इंडेक्स की सूची में दिखता है. साथ ही, MongoDB के साथ काम करने वाली कार्रवाइयां, इंडेक्स बनाना शुरू कर देती हैं. इंडेक्स बनने के बाद, आपको इंडेक्स के बगल में हरे रंग का सही का निशान दिखेगा. अगर इंडेक्स नहीं बनाया गया है, तो इसकी संभावित वजहों के लिए, इंडेक्स बनाने से जुड़ी गड़बड़ियां देखें.

2dsphere इंडेक्स बनाना

जियोस्पेशल क्वेरी करने और किसी खास देशांतर और अक्षांश से किसी तय सीमा के अंदर मौजूद दस्तावेज़ों को खोजने के लिए, 2dsphere इंडेक्स बनाएं.

अपने कलेक्शन के लिए 2dsphere इंडेक्स बनाने के लिए, यह तरीका अपनाएं:

MongoDB API

इंडेक्स बनाने के लिए, createIndex() तरीके का इस्तेमाल करें. उदाहरण के लिए:

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

db.runCommand() की मदद से इंडेक्स बनाने की सुविधा भी उपलब्ध है. हालांकि, इसमें ज़्यादा से ज़्यादा एक इंडेक्स इस्तेमाल किया जा सकता है:

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 का इस्तेमाल करके अपने इंडेक्स को बांटा जा सकता है. इससे लोग अपने इलाके के रेस्टोरेंट के बारे में क्वेरी कर पाएंगे.

    अगर आपने इंडेक्स को बांटा है, तो सिर्फ़ ऐसी क्वेरी चलाई जा सकती हैं जिनमें बांटा गया फ़ील्ड तय किया गया हो.

सीमाएं

  • हर अनुरोध के लिए, सिर्फ़ एक इंडेक्स बनाया जा सकता है.
  • MongoDB API की मदद से इंडेक्स बनाने के लिए, ऑडिट लॉग में google.firestore.admin.v1.FirestoreAdmin.CreateIndex नाम के तरीके का इस्तेमाल किया जाता है.
  • इंडेक्स करने के लिए उपलब्ध विकल्पों के बारे में जानने के लिए, इंडेक्स और इंडेक्स प्रॉपर्टी देखें.

Firebase कंसोल

  1. Firebase कंसोल में, Firestore डेटाबेस पेज पर जाएं.

    Firestore डेटाबेस पर जाएं

  2. डेटाबेस की सूची में से कोई डेटाबेस चुनें.

  3. इंडेक्स टैब में, इंडेक्स बनाएं पर क्लिक करें.

  4. कलेक्शन आईडी डालें.

  5. एक या उससे ज़्यादा फ़ील्ड पाथ जोड़ें और हर फ़ील्ड पाथ के लिए इंडेक्स का विकल्प चुनें.

  6. बनाएं पर क्लिक करें.

  7. आपका नया इंडेक्स, इंडेक्स की सूची में दिखता है. साथ ही, MongoDB के साथ काम करने वाली कार्रवाइयां, इंडेक्स बनाना शुरू कर देती हैं. इंडेक्स बनने के बाद, आपको इंडेक्स के बगल में हरे रंग का सही का निशान दिखेगा. अगर इंडेक्स नहीं बनाया गया है, तो इसकी संभावित वजहों के लिए, इंडेक्स बनाने से जुड़ी गड़बड़ियां देखें.

इंडेक्स मिटाना

किसी इंडेक्स को मिटाने के लिए, यह तरीका अपनाएं:

MongoDB API

किसी इंडेक्स को मिटाने के लिए, dropIndex() तरीके का इस्तेमाल करें. उदाहरण के लिए:

इंडेक्स के नाम का इस्तेमाल करके इंडेक्स मिटाना

db.restaurants.dropIndex("cuisine_index")

इंडेक्स की परिभाषा का इस्तेमाल करके इंडेक्स मिटाना

db.restaurants.dropIndex({"cuisine" : 1})
Firebase कंसोल
  1. Firebase कंसोल में, Firestore डेटाबेस पेज पर जाएं.

    Firestore डेटाबेस पर जाएं

  2. डेटाबेस की सूची में से कोई डेटाबेस चुनें.
  3. इंडेक्स टैब पर क्लिक करें.
  4. इंडेक्स की सूची में, उस इंडेक्स के लिए ज़्यादा बटन से मिटाएं चुनें जिसे आपको मिटाना है.
  5. Delete Index पर क्लिक करें.
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 को इंडेक्स बनाना होगा. इसके बाद, मौजूदा डेटा के साथ इंडेक्स एंट्री को बैकफ़िल करना होगा. किसी इंडेक्स को बनाने में लगने वाला समय, इन बातों पर निर्भर करता है:

  • किसी इंडेक्स को बनाने में कम से कम कुछ मिनट लगते हैं. भले ही, डेटाबेस खाली हो.

  • इंडेक्स की एंट्री को बैकफ़िल करने में लगने वाला समय, इस बात पर निर्भर करता है कि मौजूदा डेटा में से कितना डेटा नए इंडेक्स में शामिल करना है. इंडेक्स की परिभाषा से मेल खाने वाली फ़ील्ड वैल्यू जितनी ज़्यादा होंगी, इंडेक्स एंट्री को वापस भरने में उतना ही ज़्यादा समय लगेगा.

ज़्यादा समय तक चलने वाली कार्रवाइयों को मैनेज करना

इंडेक्स बनाने की प्रोसेस, ज़्यादा समय तक चलने वाली कार्रवाई होती है. यहां दिए गए सेक्शन में, इंडेक्स के लिए लंबे समय तक चलने वाली कार्रवाइयों को मैनेज करने का तरीका बताया गया है.

इंडेक्स बनाना शुरू करने के बाद, Cloud Firestore इस ऑपरेशन को एक यूनीक नाम असाइन करता है. कार्रवाई के नामों से पहले projects/PROJECT_ID/databases/DATABASE_ID/operations/ प्रीफ़िक्स लगाया जाता है. उदाहरण के लिए:

projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

describe कमांड के लिए ऑपरेशन का नाम तय करते समय, प्रीफ़िक्स को हटाया जा सकता है.

ज़्यादा समय तक चलने वाली सभी कार्रवाइयों की सूची बनाना

लंबे समय तक चलने वाली कार्रवाइयों की सूची बनाने के लिए, gcloud firestore operations list कमांड का इस्तेमाल करें. इस कमांड से, जारी और हाल ही में पूरी हुई कार्रवाइयों की सूची मिलती है. ऑपरेशन पूरा होने के बाद, कुछ दिनों तक ये दिखते हैं:

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 फ़ील्ड सेट नहीं है, तो इसका मतलब है कि कार्रवाई पूरी नहीं हुई है.