त्रुटि संदेश के माध्यम से अनुपलब्ध अनुक्रमणिका बनाएँ
यदि आप एक श्रेणी खंड के साथ एक मिश्रित क्वेरी का प्रयास करते हैं जो किसी मौजूदा अनुक्रमणिका पर मैप नहीं करता है, तो आपको एक त्रुटि प्राप्त होती है। त्रुटि संदेश में Firebase कंसोल में अनुपलब्ध अनुक्रमणिका बनाने के लिए एक सीधा लिंक शामिल है।
Firebase कंसोल के जनरेट किए गए लिंक का अनुसरण करें, स्वचालित रूप से पॉप्युलेट की गई जानकारी की समीक्षा करें और बनाएं पर क्लिक करें।
फायरबेस कंसोल का प्रयोग करें
Firebase कंसोल से मैन्युअल रूप से एक नई अनुक्रमणिका बनाने के लिए:
- फायरबेस कंसोल के क्लाउड फायरस्टोर सेक्शन में जाएं।
- इंडेक्स टैब पर जाएं और इंडेक्स जोड़ें पर क्लिक करें।
- संग्रह का नाम दर्ज करें और उन फ़ील्ड को सेट करें जिनके द्वारा आप अनुक्रमणिका को क्रमित करना चाहते हैं।
- बनाएं क्लिक करें.
क्वेरी के आकार के आधार पर इंडेक्स को बनने में कुछ मिनट लग सकते हैं। उन्हें बनाने के बाद, आप समग्र अनुक्रमणिका अनुभाग में अपनी अनुक्रमणिका और उनकी स्थिति देख सकते हैं। यदि वे अभी भी निर्माण कर रहे हैं, तो फायरबेस कंसोल में एक भवन स्थिति पट्टी शामिल है।
अनुक्रमणिका हटाएं
किसी अनुक्रमणिका को हटाने के लिए:
- फायरबेस कंसोल के क्लाउड फायरस्टोर सेक्शन में जाएं।
- इंडेक्स टैब पर क्लिक करें।
- उस इंडेक्स पर होवर करें जिसे आप हटाना चाहते हैं और संदर्भ मेनू से हटाएं चुनें।
- पुष्टि करें कि आप अलर्ट से हटाएँ क्लिक करके इसे हटाना चाहते हैं।
फायरबेस सीएलआई का प्रयोग करें
आप अनुक्रमणिका को Firebase CLI के साथ परिनियोजित भी कर सकते हैं। आरंभ करने के लिए, अपनी परियोजना निर्देशिका में firebase init firestore
चलाएँ। सेटअप के दौरान, फायरबेस सीएलआई सही प्रारूप में डिफ़ॉल्ट इंडेक्स के साथ एक JSON फ़ाइल बनाता है। अधिक अनुक्रमणिका जोड़ने के लिए फ़ाइल को संपादित करें और इसे firebase deploy
आदेश के साथ परिनियोजित करें। यदि आप केवल अनुक्रमणिका परिनियोजित करना चाहते हैं, तो --only firestore:indexes
ध्वज जोड़ें। यदि आप Firebase कंसोल का उपयोग करके अनुक्रमणिका में संपादन करते हैं, तो सुनिश्चित करें कि आप अपनी स्थानीय अनुक्रमणिका फ़ाइल को भी अपडेट करते हैं। JSON अनुक्रमणिका परिभाषा संदर्भ देखें।
सूचकांक निर्माण समय
एक इंडेक्स बनाने के लिए, क्लाउड फायरस्टोर को इंडेक्स सेट करना होगा और फिर मौजूदा डेटा के साथ इंडेक्स को बैकफिल करना होगा। अनुक्रमणिका निर्माण समय सेटअप समय और बैकफ़िल समय का योग है:
एक इंडेक्स सेट करने में कुछ मिनट लगते हैं। एक इंडेक्स के लिए न्यूनतम निर्माण समय कुछ मिनट है, यहां तक कि एक खाली डेटाबेस के लिए भी।
बैकफ़िल का समय इस बात पर निर्भर करता है कि नए इंडेक्स में मौजूदा डेटा कितना है। इंडेक्स की परिभाषा से मेल खाने वाले जितने अधिक फ़ील्ड मान होंगे, इंडेक्स को बैकफ़िल करने में उतना ही अधिक समय लगेगा।
इंडेक्स बिल्ड लंबे समय तक चलने वाले ऑपरेशन हैं।
आपके द्वारा अनुक्रमणिका निर्माण प्रारंभ करने के बाद, Cloud Firestore ऑपरेशन को एक अद्वितीय नाम प्रदान करता है। उदाहरण के लिए, ऑपरेशन नाम projects/[PROJECT_ID]/databases/(default)/operations/
के साथ उपसर्ग करते हैं:
projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
हालाँकि, आप describe
कमांड के लिए एक ऑपरेशन नाम निर्दिष्ट करते समय उपसर्ग को छोड़ सकते हैं।
सभी लंबे समय से चल रहे कार्यों को सूचीबद्ध करना
लंबे समय से चल रहे संचालन को सूचीबद्ध करने के लिए, gcloud फायरस्टोर संचालन सूची कमांड का उपयोग करें। यह आदेश चल रहे और हाल ही में पूर्ण किए गए कार्यों को सूचीबद्ध करता है। संचालन पूरा होने के बाद कुछ दिनों के लिए सूचीबद्ध हैं:
gcloud firestore operations list
ऑपरेशन की स्थिति जांचें
सभी लंबे समय तक चलने वाले कार्यों को सूचीबद्ध करने के बजाय, आप किसी एकल ऑपरेशन के विवरण को सूचीबद्ध कर सकते हैं:
gcloud firestore operations describe operation-name
पूरा होने के समय का अनुमान
जैसे ही आपका ऑपरेशन चलता है, ऑपरेशन की समग्र स्थिति के लिए state
फ़ील्ड का मान देखें।
लंबे समय तक चलने वाले ऑपरेशन की स्थिति के लिए अनुरोध भी मेट्रिक्स workEstimated
और workCompleted
है। ये मेट्रिक्स दस्तावेजों की संख्या के लिए लौटाए जाते हैं। workEstimated
एक ऑपरेशन द्वारा संसाधित किए जाने वाले दस्तावेज़ों की अनुमानित कुल संख्या को दर्शाता है। workCompleted
अब तक संसाधित किए गए दस्तावेज़ों की संख्या दिखाता है। ऑपरेशन पूरा होने के बाद, workCompleted
उन दस्तावेजों की कुल संख्या को दर्शाता है जो वास्तव में संसाधित किए गए थे, जो workEstimated
के मूल्य से भिन्न हो सकते हैं।
मोटे तौर पर प्रगति अनुमान के लिए अनुमानित workEstimated
को workCompleted
से विभाजित करें। अनुमान गलत हो सकता है क्योंकि यह विलंबित सांख्यिकी संग्रह पर निर्भर करता है।
उदाहरण के लिए, यहां एक इंडेक्स बिल्ड की प्रगति की स्थिति है:
{ "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 को उसके द्वारा अनुक्रमणित किए जा रहे डेटा के साथ कोई समस्या आती है, तो अनुक्रमण कार्रवाई विफल हो सकती है। आमतौर पर, इसका मतलब है कि आपने इंडेक्स की सीमा पार कर ली है । उदाहरण के लिए, कार्रवाई प्रति दस्तावेज़ अनुक्रमणिका प्रविष्टियों की अधिकतम संख्या तक पहुँच सकती है।
यदि अनुक्रमणिका निर्माण विफल रहता है, तो आपको कंसोल में त्रुटि संदेश दिखाई देता है। यह सत्यापित करने के बाद कि आप किसी अनुक्रमणिका सीमा को नहीं मार रहे हैं, अपनी अनुक्रमणिका कार्रवाई का पुन: प्रयास करें।