Firestore Enterprise edition के इंडेक्स के बारे में ज़्यादा जानने के लिए, इंडेक्स की खास जानकारी देखें.
शुरू करने से पहले
Cloud Firestore में इंडेक्स बनाने से पहले, पक्का करें कि आपको इनमें से कोई भूमिका असाइन की गई हो:
roles/datastore.ownerroles/datastore.indexAdminroles/editorroles/owner
कोई भूमिका असाइन करने के लिए, कोई एक भूमिका असाइन करना लेख देखें. Cloud Firestore की भूमिकाओं और उनसे जुड़ी अनुमतियों के बारे में ज़्यादा जानने के लिए, पहले से तय की गई भूमिकाएं देखें.
अगर आपने पसंद के मुताबिक भूमिकाएं तय की हैं, तो इंडेक्स बनाने के लिए, ये सभी अनुमतियां असाइन करें:
datastore.indexes.createdatastore.indexes.deletedatastore.indexes.getdatastore.indexes.listdatastore.indexes.update
इंडेक्स बनाना
इंडेक्स बनाने के लिए, यह तरीका अपनाएं:
Firebase कंसोल
-
Firebase कंसोल में, Firestore डेटाबेस पेज पर जाएं.
- डेटाबेस की सूची में से कोई डेटाबेस चुनें.
- इंडेक्स टैब में, इंडेक्स बनाएं पर क्लिक करें.
- कलेक्शन आईडी डालें.
- एक या उससे ज़्यादा फ़ील्ड पाथ जोड़ें और हर पाथ के लिए इंडेक्स का कोई विकल्प चुनें.
- फ़ील्ड की मौजूदगी का कोई विकल्प चुनें. जैसे, नॉन-स्पार्स या स्पार्स.
- बनाएं पर क्लिक करें.
- आपका नया इंडेक्स, इंडेक्स की सूची में दिखता है. साथ ही, Cloud Firestore आपके इंडेक्स को बनाना शुरू कर देता है. इंडेक्स बन जाने पर, आपको इंडेक्स के बगल में हरे रंग का सही का निशान दिखेगा. अगर इंडेक्स नहीं बनता है, तो संभावित वजहों के लिए, इंडेक्स बनाने में होने वाली गड़बड़ियां देखें.
gcloud CLI
इंडेक्स बनाने के लिए, gcloud firestore indexes composite create
कमांड का इस्तेमाल करें.
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION \ --field-config=FIELD_CONFIGURATION \ --query-scope=collection-group \ --density=dense
इन वैल्यू को बदलें:
- 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 सेट करें.
यूनीक इंडेक्स बनाने के लिए, --unique फ़्लैग जोड़ें.
Terraform
google_firestore_index
संसाधन का इस्तेमाल करें.
resource "google_firestore_index" "index" { database = "DATABASE_ID" collection = "COLLECTION" 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में से कोई एक
टेक्स्ट इंडेक्स बनाना
टेक्स्ट इंडेक्स बनाने के लिए, Google Cloud Console का इस्तेमाल करें.
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से कोई डेटाबेस चुनें.
नेविगेशन मेन्यू में, इंडेक्स पर क्लिक करें.
ज़रूरी नहीं: इंडेक्स के लिए कोई नाम डालें.
खोज का टाइप पर जाएं और टेक्स्ट चुनें.
कलेक्शन आईडी डालें.
इंडेक्स करने के लिए, एक या उससे ज़्यादा फ़ील्ड कॉन्फ़िगर करें.
इंडेक्स के लिए क्वेरी स्कोप सेट करें.
कोई डिफ़ॉल्ट भाषा चुनें.
ज़रूरी नहीं: किसी ऐसे फ़ील्ड के नाम के लिए, भाषा को बदलने का पाथ सेट करें जिसमें किसी दस्तावेज़ की भाषा सेटिंग शामिल हो.
बनाएं पर क्लिक करें.
आपका नया इंडेक्स, इंडेक्स की सूची में दिखता है. साथ ही, Cloud Firestore आपके इंडेक्स को बनाना शुरू कर देता है. इंडेक्स बन जाने पर, इंडेक्स के बगल में हरे रंग का सही का निशान दिखता है.
जियोस्पेशल इंडेक्स बनाना
जियोस्पेशल इंडेक्स बनाने के लिए, Google Cloud Console का इस्तेमाल करें.
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से कोई डेटाबेस चुनें.
नेविगेशन मेन्यू में, इंडेक्स पर क्लिक करें.
ज़रूरी नहीं: इंडेक्स के लिए कोई नाम डालें.
खोज का टाइप पर जाएं और जियो (2dsphere) चुनें.
कलेक्शन आईडी डालें.
इंडेक्स करने के लिए, एक या उससे ज़्यादा फ़ील्ड कॉन्फ़िगर करें.
इंडेक्स के लिए क्वेरी स्कोप सेट करें.
बनाएं पर क्लिक करें.
आपका नया इंडेक्स, इंडेक्स की सूची में दिखता है. साथ ही, Cloud Firestore आपके इंडेक्स को बनाना शुरू कर देता है. इंडेक्स बन जाने पर, इंडेक्स के बगल में हरे रंग का सही का निशान दिखता है.
कोई इंडेक्स मिटाना
कोई इंडेक्स मिटाने के लिए, यह तरीका अपनाएं:
Firebase कंसोल
-
Firebase कंसोल में, Firestore डेटाबेस पेज पर जाएं.
- डेटाबेस की सूची में से कोई डेटाबेस चुनें.
- इंडेक्स टैब पर क्लिक करें.
- इंडेक्स की सूची में, उस इंडेक्स के लिए ज़्यादा बटन से मिटाएं चुनें जिसे आपको मिटाना है.
- इंडेक्स मिटाएं पर क्लिक करें.
gcloud CLI
इंडेक्स का नाम ढूंढने के लिए,
gcloud firestore indexes composite listकमांड का इस्तेमाल करें.gcloud firestore indexes composite list \ --database='DATABASE_ID'
DATABASE_ID को डेटाबेस आईडी से बदलें.
-
इंडेक्स मिटाने के लिए,
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 फ़ील्ड सेट नहीं है, तो इसका मतलब है कि कार्रवाई पूरी नहीं हुई है.