Cloud Search के इस ट्यूटोरियल पेज पर, डेटा इंडेक्स करने के लिए डेटा सोर्स और कॉन्टेंट कनेक्टर सेट अप करने का तरीका बताया गया है. इस ट्यूटोरियल को शुरू से देखने के लिए, Cloud Search का इस्तेमाल शुरू करने से जुड़ा ट्यूटोरियल देखें
कनेक्टर बनाना
अपनी वर्किंग डायरेक्ट्री को cloud-search-samples/end-to-end/connector
डायरेक्ट्री में बदलें और यह कमांड चलाएं:
mvn package -DskipTests
यह कमांड, कॉन्टेंट कनेक्टर बनाने के लिए ज़रूरी डिपेंडेंसी डाउनलोड करती है और कोड को कंपाइल करती है.
सेवा खाते के क्रेडेंशियल बनाना
इस कनेक्टर को Cloud Search API को कॉल करने के लिए, सेवा खाते के क्रेडेंशियल की ज़रूरत होती है. क्रेडेंशियल बनाने के लिए:
- Google Cloud Console पर वापस जाएं.
- बाईं ओर मौजूद नेविगेशन में, क्रेडेंशियल पर क्लिक करें. इसके बाद, "क्रेडेंशियल" पेज दिखेगा.
- + क्रेडेंशियल बनाएं ड्रॉप-डाउन सूची पर क्लिक करें और सेवा खाता चुनें. "सेवा खाता बनाएं" पेज दिखेगा.
- सेवा खाते का नाम फ़ील्ड में, "tutorial" डालें.
- सेवा खाते के नाम के ठीक बाद मौजूद, सेवा खाते के आईडी की वैल्यू नोट करें. इस वैल्यू का इस्तेमाल बाद में किया जाता है.
- बनाएं पर क्लिक करें. "सेवा खाते की अनुमतियां (ज़रूरी नहीं)" डायलॉग बॉक्स दिखता है.
- जारी रखें पर क्लिक करें. "उपयोगकर्ताओं को इस सेवा खाते का ऐक्सेस दें (ज़रूरी नहीं)" डायलॉग बॉक्स दिखता है.
- हो गया पर क्लिक करें. आपको "क्रेडेंशियल" स्क्रीन दिखेगी.
- सेवा खातों में जाकर, सेवा खाते के ईमेल पर क्लिक करें. इसके बाद, "सेवा खाते की जानकारी" पेज दिखेगा.
- कुंजियों में जाकर, कुंजी जोड़ें ड्रॉप-डाउन सूची पर क्लिक करें और नई कुंजी बनाएं चुनें. "निजी कुंजी बनाएं" डायलॉग बॉक्स दिखता है.
- बनाएं पर क्लिक करें.
- (ज़रूरी नहीं) अगर "क्या आपको console.cloud.google.com पर डाउनलोड करने की अनुमति देनी है?” डायलॉग बॉक्स दिखता है, तो अनुमति दें पर क्लिक करें.
- निजी कुंजी फ़ाइल आपके कंप्यूटर पर सेव होती है. डाउनलोड की गई फ़ाइल की जगह नोट करें. इस फ़ाइल का इस्तेमाल, कॉन्टेंट कनेक्टर को कॉन्फ़िगर करने के लिए किया जाता है. इससे Google Cloud Search API को कॉल करते समय, कॉन्टेंट कनेक्टर अपनी पुष्टि कर सकता है.
तीसरे पक्ष की सहायता को शुरू करना
किसी अन्य Cloud Search API को कॉल करने से पहले, Google Cloud Search के लिए तीसरे पक्ष की सहायता शुरू करें.
तीसरे पक्ष की सहायता को शुरू करने के लिए:
- Cloud Search प्लैटफ़ॉर्म प्रोजेक्ट में वेब ऐप्लिकेशन क्रेडेंशियल बनाएं. क्रेडेंशियल बनाना लेख पढ़ें. आपको क्लाइंट आईडी और क्लाइंट सीक्रेट की ज़रूरत होगी.
- OAuth 2.0 Playground का इस्तेमाल करके ऐक्सेस टोकन पाएं:
- OAuth 2.0 कॉन्फ़िगरेशन (सेटिंग आइकॉन) पर क्लिक करें और अपने OAuth क्रेडेंशियल इस्तेमाल करें को चुनें.
- अपना क्लाइंट आईडी और क्लाइंट सीक्रेट डालें.
- स्कोप फ़ील्ड में,
https://www.googleapis.com/auth/cloud_search.settingsडालें. इसके बाद, एपीआई को अनुमति दें पर क्लिक करें. - ऑथराइज़ेशन कोड को टोकन के लिए बदलें पर क्लिक करें.
इस कर्ल कमांड को चलाएं. साथ ही,
[YOUR_ACCESS_TOKEN]को अपने टोकन से बदलें:curl --request POST \ 'https://cloudsearch.googleapis.com/v1:initializeCustomer' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{}' \ --compressedअगर अनुरोध पूरा हो जाता है, तो जवाब के मुख्य हिस्से में
operationशामिल होता है. अगर ऐसा नहीं होता है, तो Cloud Search की सहायता टीम से संपर्क करें.शुरू करने की पुष्टि करने के लिए,
operations.getका इस्तेमाल करें:curl 'https://cloudsearch.googleapis.com/v1/operations/<var>operation_name</var>?key=[YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressedजब
donetrueहो जाए, तो समझें कि प्रोसेस पूरी हो गई है.
डेटा सोर्स बनाना
इसके बाद, Admin console में जाकर डेटा सोर्स बनाएं. डेटा सोर्स, कनेक्टर का इस्तेमाल करके कॉन्टेंट को इंडेक्स करने के लिए नेमस्पेस उपलब्ध कराता है.
- Google Admin console खोलें.
- ऐप्लिकेशन आइकॉन पर क्लिक करें. इसके बाद, "ऐप्लिकेशन एडमिनिस्ट्रेशन" पेज दिखेगा.
- Google Workspace पर क्लिक करें. "Google Workspace के ऐप्लिकेशन का एडमिन पेज" दिखता है.
- नीचे की ओर स्क्रोल करें और Cloud Search पर क्लिक करें. "Google Workspace की सेटिंग" पेज दिखता है.
- तीसरे पक्ष के डेटा सोर्स पर क्लिक करें. इसके बाद, "डेटा सोर्स" पेज दिखेगा.
- गोल पीले रंग के + पर क्लिक करें. इसके बाद, "नया डेटा सोर्स जोड़ें" डायलॉग बॉक्स दिखेगा.
- डिसप्ले नेम फ़ील्ड में, "tutorial" टाइप करें.
- सेवा खाते के ईमेल पते फ़ील्ड में, उस सेवा खाते का ईमेल पता डालें जिसे आपने पिछले सेक्शन में बनाया था. अगर आपको सेवा खाते का ईमेल पता नहीं पता है, तो सेवा खातों वाले पेज पर जाकर वैल्यू देखें.
- जोड़ें पर क्लिक करें. इसके बाद, "डेटा सोर्स सफलतापूर्वक बनाया गया" डायलॉग दिखेगा.
- *ठीक है पर क्लिक करें. नए डेटा सोर्स के लिए सोर्स आईडी नोट करें. सोर्स आईडी का इस्तेमाल, कॉन्टेंट कनेक्टर को कॉन्फ़िगर करने के लिए किया जाता है.
GitHub API के लिए निजी ऐक्सेस टोकन जनरेट करना
कनेक्टर को GitHub API का पुष्टि किया गया ऐक्सेस चाहिए, ताकि उसके पास ज़रूरत के मुताबिक कोटा हो. कनेक्टर, OAuth के बजाय निजी ऐक्सेस टोकन का इस्तेमाल करता है, ताकि इसे आसानी से इस्तेमाल किया जा सके. निजी टोकन की मदद से, OAuth की तरह ही सीमित अनुमतियों वाले उपयोगकर्ता के तौर पर पुष्टि की जा सकती है.
- GitHub में लॉग इन करें.
- सबसे ऊपर दाएं कोने में, अपनी प्रोफ़ाइल फ़ोटो पर क्लिक करें. एक ड्रॉप-डाउन मेन्यू दिखता है.
- सेटिंग पर क्लिक करें.
- डेवलपर सेटिंग पर क्लिक करें.
- निजी ऐक्सेस टोकन पर क्लिक करें.
- निजी ऐक्सेस टोकन जनरेट करें पर क्लिक करें.
- ध्यान दें फ़ील्ड में, "Cloud Search ट्यूटोरियल" डालें.
- public_repo स्कोप की जांच करें.
- टोकन जनरेट करें पर क्लिक करें.
- जनरेट किए गए टोकन को नोट करें. इसका इस्तेमाल कनेक्टर, GitHub API को कॉल करने के लिए करता है. साथ ही, इंडेक्सिंग करने के लिए एपीआई कोटा उपलब्ध कराता है.
कनेक्टर को कॉन्फ़िगर करना
क्रेडेंशियल और डेटा सोर्स बनाने के बाद, कनेक्टर के कॉन्फ़िगरेशन को अपडेट करें, ताकि ये वैल्यू शामिल की जा सकें:
- कमांड लाइन से, डायरेक्ट्री को
cloud-search-samples/end-to-end/connector/पर ले जाएं. - टेक्स्ट एडिटर की मदद से
sample-config.propertiesफ़ाइल खोलें. api.serviceAccountPrivateKeyFileपैरामीटर को, सेवा के उन क्रेडेंशियल के फ़ाइल पाथ पर सेट करें जिन्हें आपने पहले डाउनलोड किया था.api.sourceIdपैरामीटर को उस डेटा सोर्स के आईडी पर सेट करें जिसे आपने पहले बनाया था.github.userपैरामीटर को अपने GitHub उपयोगकर्ता नाम पर सेट करें.github.tokenपैरामीटर को, पहले बनाए गए ऐक्सेस टोकन पर सेट करें.- फ़ाइल सेव करें.
स्कीमा अपडेट करना
कनेक्टर, स्ट्रक्चर्ड और अनस्ट्रक्चर्ड, दोनों तरह के कॉन्टेंट को इंडेक्स करता है. डेटा को इंडेक्स करने से पहले, आपको डेटा सोर्स के लिए स्कीमा अपडेट करना होगा. स्कीमा अपडेट करने के लिए, यह कमांड चलाएं:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.SchemaTool \
-Dexec.args="-Dconfig=sample-config.properties"
कनेक्टर चलाना
कनेक्टर चलाने और इंडेक्सिंग शुरू करने के लिए, यह कमांड चलाएं:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.GithubConnector \
-Dexec.args="-Dconfig=sample-config.properties"
कनेक्टर का डिफ़ॉल्ट कॉन्फ़िगरेशन, googleworkspace संगठन में मौजूद किसी एक रिपॉज़िटरी को इंडेक्स करना है. रिपॉज़िटरी को इंडेक्स करने में करीब एक मिनट लगता है.
शुरुआती इंडेक्सिंग के बाद, कनेक्टर उस रिपॉज़िटरी में हुए बदलावों के लिए लगातार पोल करता रहता है जिन्हें Cloud Search इंडेक्स में दिखाना होता है.
कोड की समीक्षा की जा रही है
बाकी सेक्शन में, कनेक्टर बनाने का तरीका बताया गया है.
ऐप्लिकेशन शुरू करना
कनेक्टर का एंट्री पॉइंट, GithubConnector क्लास है. main तरीके से, SDK टूल के IndexingApplication को इंस्टैंशिएट किया जाता है और इसे शुरू किया जाता है.
एसडीके की ओर से उपलब्ध कराया गया ListingConnector, ट्रैवर्सल की ऐसी रणनीति लागू करता है जो इंडेक्स में मौजूद आइटम की स्थिति को ट्रैक करने के लिए, Cloud Search queues का इस्तेमाल करती है. यह GithubRepository को सौंपता है. इसे सैंपल कनेक्टर ने GitHub से कॉन्टेंट ऐक्सेस करने के लिए लागू किया है.
GitHub रिपॉज़िटरी को ऐक्सेस करना
पूरे ट्रैवर्सल के दौरान, getIds()
तरीके को कॉल किया जाता है, ताकि उन आइटम को पुश किया जा सके जिन्हें इंडेक्स करने की ज़रूरत हो सकती है.
कनेक्टर, कई रिपॉज़िटरी या संगठनों को इंडेक्स कर सकता है. किसी गड़बड़ी के असर को कम करने के लिए, एक बार में सिर्फ़ एक GitHub रिपॉज़िटरी को स्कैन किया जाता है. ट्रैवर्सल के नतीजों के साथ एक चेकपॉइंट दिखाया जाता है. इसमें उन रिपॉज़िटरी की सूची होती है जिन्हें getIds() को बाद में किए जाने वाले कॉल में इंडेक्स किया जाना है. गड़बड़ी होने पर, इंडेक्सिंग को मौजूदा रिपॉज़िटरी से फिर से शुरू किया जाता है. इसे शुरू से शुरू नहीं किया जाता.
collectRepositoryItems() वाला तरीका, किसी एक GitHub रिपॉज़िटरी को ट्रैवर्स करता है. यह तरीका, ApiOperations का कलेक्शन दिखाता है. यह कलेक्शन, उन आइटम को दिखाता है जिन्हें क्यू में पुश किया जाना है. आइटम को संसाधन के नाम और हैश वैल्यू के तौर पर पुश किया जाता है. हैश वैल्यू, आइटम की मौजूदा स्थिति को दिखाती है.
इस हैश वैल्यू का इस्तेमाल, GitHub रिपॉज़िटरी के बाद के ट्रैवर्सल में किया जाता है. इस वैल्यू से, यह पता लगाया जा सकता है कि कॉन्टेंट में बदलाव हुआ है या नहीं. इसके लिए, आपको कोई दूसरा कॉन्टेंट अपलोड करने की ज़रूरत नहीं होती. कनेक्टर, सभी आइटम को बिना किसी जांच के कतार में लगा देता है. अगर आइटम नया है या हैश वैल्यू बदल गई है, तो इसे पोलिंग के लिए उपलब्ध कराया जाता है. अगर ऐसा नहीं होता है, तो यह माना जाता है कि आइटम में कोई बदलाव नहीं किया गया है.
सूची को प्रोसेस किया जा रहा है
पूरा ट्रैवर्सल पूरा होने के बाद, कनेक्टर उन आइटम के लिए कतार को पोल करना शुरू कर देता है जिन्हें इंडेक्स करने की ज़रूरत होती है. getDoc()
मेथड को, हर उस आइटम के लिए कॉल किया जाता है जिसे कतार से निकाला जाता है. यह तरीका, GitHub से आइटम को पढ़ता है और इंडेक्सिंग के लिए, उसे सही फ़ॉर्मैट में बदलता है.
कनेक्टर, लाइव डेटा के हिसाब से काम करता है. इस डेटा में कभी भी बदलाव किया जा सकता है. इसलिए, getDoc() यह भी पुष्टि करता है कि कतार में मौजूद आइटम अब भी मान्य है. साथ ही, इंडेक्स से उन सभी आइटम को मिटा देता है जो अब मौजूद नहीं हैं.
कनेक्टर, GitHub के जिन ऑब्जेक्ट को इंडेक्स करता है उनके लिए indexItem() तरीका, Cloud Search के लिए आइटम का प्रतिनिधित्व करने वाला ऑब्जेक्ट बनाता है. उदाहरण के लिए, कॉन्टेंट आइटम के लिए प्रज़ेंटेशन बनाने के लिए:
इसके बाद, सर्च इंटरफ़ेस डिप्लॉय करें.