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 के लिए, तीसरे पक्ष की सहायता को शुरू करने के लिए:
आपके Cloud Search प्लैटफ़ॉर्म प्रोजेक्ट में सेवा खाते के क्रेडेंशियल मौजूद हैं. हालांकि, तीसरे पक्ष की सहायता को शुरू करने के लिए, आपको वेब ऐप्लिकेशन के क्रेडेंशियल बनाने होंगे. वेब ऐप्लिकेशन के क्रेडेंशियल बनाने के निर्देशों के लिए, क्रेडेंशियल बनाना लेख पढ़ें. यह चरण पूरा करने के बाद, आपके पास क्लाइंट आईडी और क्लाइंट सीक्रेट फ़ाइल होनी चाहिए.
ऐक्सेस टोकन पाने के लिए, Google के OAuth 2 प्लेग्राउंड का इस्तेमाल करें:
- सेटिंग पर क्लिक करें और अपने पुष्टि करने वाले क्रेडेंशियल का इस्तेमाल करें को चुनें.
- पहले चरण में मिला क्लाइंट आईडी और क्लाइंट सीक्रेट डालें.
- बंद करें पर क्लिक करें.
- स्कोप फ़ील्ड में,
https://www.googleapis.com/auth/cloud_search.settings
टाइप करें और अनुमति दें पर क्लिक करें. OAuth 2.0 का प्लेग्राउंड, ऑथराइज़ेशन कोड दिखाता है. - ऑथराइज़ेशन कोड को टोकन के लिए बदलें पर क्लिक करें. एक टोकन वापस कर दिया जाता है.
Cloud Search के लिए तीसरे पक्ष की सहायता को शुरू करने के लिए, यहां दिए गए curl कमांड का इस्तेमाल करें.
[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
का एक इंस्टेंस शामिल किया जाता है. उदाहरण के लिए:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" }
अगर ऐसा नहीं होता है, तो Cloud Search की सहायता टीम से संपर्क करें.
operations.get का इस्तेमाल करके यह पुष्टि करें कि तीसरे पक्ष की सहायता शुरू हो गई है:
curl \ 'https://cloudsearch.googleapis.com/v1/operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY?key= [YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressed
तीसरे पक्ष की शुरुआत पूरी होने पर, इसमें
done
फ़ील्ड होता है, जिसेtrue
पर सेट किया जाता है. उदाहरण के लिए:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" done: true }
डेटा सोर्स बनाना
इसके बाद, 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 की कतारों का इस्तेमाल करती है. यह GitHub से कॉन्टेंट ऐक्सेस करने के लिए, सैंपल कनेक्टर की मदद से लागू किए गए GithubRepository
को सौंपता है.
GitHub रिपॉज़िटरी को ट्रैवर्स करना
पूरे ट्रैवर्सल के दौरान, getIds()
तरीके को कॉल किया जाता है, ताकि उन आइटम को पुश किया जा सके जिन्हें इंडेक्स करने की ज़रूरत हो सकती है.
कनेक्टर, कई रिपॉज़िटरी या संगठनों को इंडेक्स कर सकता है. गड़बड़ी के असर को कम करने के लिए, एक बार में एक GitHub रिपॉज़िटरी को स्कैन किया जाता है. ट्रेवर्सल के नतीजों के साथ एक चेकपॉइंट दिखाया जाता है. इसमें उन रिपॉज़िटरी की सूची होती है जिन्हें getIds()
को बाद में किए जाने वाले कॉल में इंडेक्स करना होता है. गड़बड़ी होने पर, इंडेक्सिंग को मौजूदा रिपॉज़िटरी से फिर से शुरू किया जाता है. इसे शुरू से शुरू नहीं किया जाता.
collectRepositoryItems()
वाला तरीका, GitHub की किसी एक रिपॉज़िटरी को ट्रैवर्स करने का काम करता है. यह तरीका, ApiOperations
का कलेक्शन दिखाता है. यह कलेक्शन, उन आइटम को दिखाता है जिन्हें क्यू में पुश किया जाना है. आइटम को संसाधन के नाम और हैश वैल्यू के तौर पर पुश किया जाता है. हैश वैल्यू, आइटम की मौजूदा स्थिति को दिखाती है.
इस हैश वैल्यू का इस्तेमाल, GitHub रिपॉज़िटरी के बाद के ट्रैवर्सल में किया जाता है. इस वैल्यू से यह पता लगाया जा सकता है कि कॉन्टेंट में बदलाव हुआ है या नहीं. इसके लिए, आपको कोई दूसरा कॉन्टेंट अपलोड करने की ज़रूरत नहीं होती. कनेक्टर, सभी आइटम को बिना किसी जांच के कतार में लगा देता है. अगर आइटम नया है या हैश वैल्यू बदल गई है, तो उसे पोलिंग के लिए उपलब्ध कराया जाता है. ऐसा न होने पर, यह माना जाता है कि आइटम में कोई बदलाव नहीं किया गया है.
सूची को प्रोसेस किया जा रहा है
पूरा ट्रैवर्सल पूरा होने के बाद, कनेक्टर उन आइटम के लिए कतार को पोल करना शुरू कर देता है जिन्हें इंडेक्स करने की ज़रूरत होती है. getDoc()
मेथड को, सूची से निकाले गए हर आइटम के लिए कॉल किया जाता है. यह तरीका, GitHub से आइटम को पढ़ता है और इंडेक्सिंग के लिए, उसे सही तरीके से दिखाता है.
कनेक्टर, लाइव डेटा के हिसाब से काम करता है. इस डेटा में किसी भी समय बदलाव किया जा सकता है. इसलिए, getDoc()
यह भी पुष्टि करता है कि कतार में मौजूद आइटम अब भी मान्य है. साथ ही, इंडेक्स से उन सभी आइटम को मिटा देता है जो अब मौजूद नहीं हैं.
कनेक्टर जिन GitHub ऑब्जेक्ट को इंडेक्स करता है उनके लिए, indexItem()
तरीका Cloud Search के लिए आइटम का प्रतिनिधित्व करने वाला ऑब्जेक्ट बनाता है. उदाहरण के लिए, कॉन्टेंट आइटम के लिए प्रज़ेंटेशन बनाने के लिए:
इसके बाद, सर्च इंटरफ़ेस को डिप्लॉय करें.