Cloud Search ट्यूटोरियल के इस पेज पर, डेटा इंडेक्स करने के लिए डेटा सोर्स और कॉन्टेंट कनेक्टर सेट अप करने का तरीका बताया गया है. इस ट्यूटोरियल की शुरुआत से शुरू करने के लिए, यह देखें Cloud Search को शुरू करने के बारे में ट्यूटोरियल
कनेक्टर बनाएं
अपनी वर्किंग डायरेक्ट्री को cloud-search-samples/end-to-end/connector
डायरेक्ट्री में बदलें और इस कमांड को चलाएं:
mvn package -DskipTests
यह निर्देश, कॉन्टेंट कनेक्टर बनाने के लिए ज़रूरी डिपेंडेंसी डाउनलोड करता है और कोड को कंपाइल करता है.
सेवा खाते के क्रेडेंशियल बनाएं
Cloud Search के एपीआई को कॉल करने के लिए, कनेक्टर को सेवा खाते के क्रेडेंशियल की ज़रूरत होती है. क्रेडेंशियल बनाने के लिए:
- Google Cloud Console पर वापस जाएं.
- बाईं ओर मौजूद नेविगेशन में, क्रेडेंशियल पर क्लिक करें. "क्रेडेंशियल" पेज दिखेगा.
- + क्रेडेंशियल बनाएं ड्रॉप-डाउन सूची पर क्लिक करें और सेवा खाता चुनें. "सेवा खाता बनाएं" पेज दिखेगा.
- सेवा खाते का नाम फ़ील्ड में, "ट्यूटोरियल" डालें.
- सेवा खाते के आईडी की वैल्यू को नोट करें (सेवा खाते के नाम के ठीक बाद). इस वैल्यू का इस्तेमाल बाद में किया जाता है.
- बनाएं पर क्लिक करें. "सेवा खाते की अनुमतियां (ज़रूरी नहीं)" डायलॉग दिखता है.
- जारी रखें पर क्लिक करें. "उपयोगकर्ताओं को इस सेवा खाते का ऐक्सेस दें (ज़रूरी नहीं)" डायलॉग दिखता है.
- हो गया पर क्लिक करें. ऐसा करने पर, "क्रेडेंशियल" स्क्रीन दिखेगी.
- सेवा खाते में जाकर, सेवा खाते के ईमेल पर क्लिक करें. "सेवा खाते की जानकारी" पेज के ऐप्लिकेशन.
- कुंजियों में जाकर, कुंजी जोड़ें ड्रॉप-डाउन सूची पर क्लिक करें और नई कुंजी बनाएं चुनें. आपको "निजी पासकोड बनाएं" डायलॉग दिखेगा.
- बनाएं पर क्लिक करें.
- (ज़रूरी नहीं) अगर "क्या आपकोconsole.cloud.google.com पर डाउनलोड करने की अनुमति देनी है?” डायलॉग दिखता है, तो अनुमति दें पर क्लिक करें.
- आपके कंप्यूटर पर एक निजी कुंजी फ़ाइल सेव की गई है. डाउनलोड की गई फ़ाइल की जगह नोट करें. इस फ़ाइल का इस्तेमाल कॉन्टेंट कनेक्टर को कॉन्फ़िगर करने के लिए किया जाता है, ताकि Google Cloud Search API को कॉल करते समय यह अपनी पहचान की पुष्टि कर सके.
तीसरे पक्ष से सहायता पाने की सुविधा शुरू करें
किसी अन्य Cloud Search एपीआई को कॉल करने से पहले, आपको Google Cloud Search के लिए तीसरे पक्ष की सहायता शुरू करनी होगी.
Cloud Search के लिए तीसरे पक्ष की सहायता शुरू करने के लिए:
आपके Cloud Search प्लैटफ़ॉर्म प्रोजेक्ट में, सेवा खाते के क्रेडेंशियल शामिल हैं. हालांकि, तीसरे पक्ष से मदद लेने की सुविधा शुरू करने के लिए, आपको वेब ऐप्लिकेशन क्रेडेंशियल बनाने होंगे. वेब ऐप्लिकेशन क्रेडेंशियल बनाने के तरीके के बारे में जानकारी पाने के लिए, क्रेडेंशियल बनाएं लेख पढ़ें. इस चरण को पूरा करने के बाद, आपके पास क्लाइंट आईडी और क्लाइंट सीक्रेट फ़ाइल होनी चाहिए.
ऐक्सेस टोकन पाने के लिए, Google के OAuth 2 प्लेग्राउंड का इस्तेमाल करें:
- सेटिंग पर क्लिक करें और उपयोगकर्ता के पुष्टि करने के क्रेडेंशियल देखें.
- पहले चरण में दिया गया क्लाइंट आईडी और क्लाइंट सीक्रेट डालें.
- बंद करें पर क्लिक करें.
- स्कोप फ़ील्ड में,
https://www.googleapis.com/auth/cloud_search.settings
टाइप करें और Authorize पर क्लिक करें. OAuth 2 प्लेग्राउंड, ऑथराइज़ेशन कोड दिखाता है. - टोकन के लिए ऑथराइज़ेशन कोड एक्सचेंज करें पर क्लिक करें. टोकन दिखाया जाता है.
Cloud Search के लिए तीसरे पक्ष से सहायता देने की सुविधा शुरू करने के लिए, इस कर्ल कमांड का इस्तेमाल करें.
[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 खोलें.
- Apps आइकन पर क्लिक करें. "ऐप्लिकेशन एडमिन" पेज दिखेगा.
- Google Workspace पर क्लिक करें. आपको "ऐप्लिकेशन के लिए Google Workspace एडमिन" पेज दिखेगा.
- नीचे स्क्रॉल करें और Cloud Search पर क्लिक करें. ऐसा करने पर, "Google Workspace की सेटिंग" पेज दिखेगा.
- तीसरे पक्ष के डेटा सोर्स पर क्लिक करें. "डेटा सोर्स" पेज दिखेगा.
- गोल पीले रंग के + आइकॉन पर क्लिक करें. इसके बाद, "नया डेटा सोर्स जोड़ें" डायलॉग दिखेगा.
- डिसप्ले नेम फ़ील्ड में, "ट्यूटोरियल" लिखें.
- सेवा खाते के ईमेल पते फ़ील्ड में, उस सेवा खाते का ईमेल पता डालें जिसे आपने पिछले सेक्शन में बनाया था. अगर आपको सेवा खाते का ईमेल पता नहीं पता है, तो सेवा खाते पेज पर दी गई वैल्यू देखें.
- जोड़ें पर क्लिक करें. आपको "डेटा सोर्स बनाया गया" वाला डायलॉग बॉक्स दिखेगा.
- *ठीक है पर क्लिक करें. नए डेटा सोर्स का सोर्स आईडी नोट करें. सोर्स आईडी का इस्तेमाल कॉन्टेंट कनेक्टर को कॉन्फ़िगर करने के लिए किया जाता है.
GitHub API के लिए निजी ऐक्सेस टोकन जनरेट करें
ज़रूरत के मुताबिक कोटा होने के लिए, कनेक्टर को GitHub API के पुष्टि किए गए ऐक्सेस की ज़रूरत है. इसे आसानी से समझने के लिए, कनेक्टर OAuth के बजाय निजी ऐक्सेस टोकन का इस्तेमाल करता है. निजी टोकन, OAuth के जैसी सीमित अनुमतियों वाले उपयोगकर्ता के तौर पर पुष्टि करने की सुविधा देते हैं.
- GitHub में लॉग इन करें.
- सबसे ऊपर दाएं कोने में, अपनी प्रोफ़ाइल फ़ोटो पर क्लिक करें. एक ड्रॉप-डाउन मेन्यू दिखेगा.
- सेटिंग पर क्लिक करें.
- डेवलपर सेटिंग पर क्लिक करें.
- निजी ऐक्सेस टोकन पर क्लिक करें.
- निजी ऐक्सेस टोकन जनरेट करें पर क्लिक करें.
- नोट फ़ील्ड में, "Cloud Search का ट्यूटोरियल" डालें.
- public_repo के दायरे की जांच करें.
- टोकन जनरेट करें पर क्लिक करें.
- जनरेट किए गए टोकन को नोट करें. कनेक्टर इसका इस्तेमाल करके GitHub के एपीआई को कॉल करता है. साथ ही, इंडेक्स करने के लिए एपीआई कोटा उपलब्ध कराता है.
कनेक्टर कॉन्फ़िगर करें
क्रेडेंशियल और डेटा सोर्स बनाने के बाद, इन वैल्यू को शामिल करने के लिए कनेक्टर कॉन्फ़िगरेशन को अपडेट करें:
- कमांड लाइन से, डायरेक्ट्री को
cloud-search-samples/end-to-end/connector/
में बदलें. sample-config.properties
फ़ाइल को टेक्स्ट एडिटर में खोलें.api.serviceAccountPrivateKeyFile
पैरामीटर को सेवा के उन क्रेडेंशियल के फ़ाइल पाथ पर सेट करें जिन्हें आपने पहले डाउनलोड किया था.api.sourceId
पैरामीटर को पहले बनाए गए डेटा सोर्स के आईडी पर सेट करें.- अपने GitHub उपयोगकर्ता नाम पर
github.user
पैरामीटर सेट करें. 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
को इंस्टैंशिएट करता है और इसे शुरू करता है.
SDK टूल से मिले ListingConnector
टूल में एक ट्रैवर्सल रणनीति लागू की जाती है. यह Cloud Search की सूचियों का इस्तेमाल करके, इंडेक्स में आइटम की स्थिति को ट्रैक करती है. यह GitHub से कॉन्टेंट ऐक्सेस करने के लिए, GithubRepository
को डेलिगेट करता है. इसे सैंपल कनेक्टर की मदद से लागू किया जाता है.
GitHub डेटा स्टोर करने की जगहों पर जाना
पूरे ट्रैवर्सल के दौरान, getIds()
तरीके को उन आइटम को पुश करने के लिए कॉल किया जाता है जिन्हें सूची में इंडेक्स करने की ज़रूरत पड़ सकती है.
कनेक्टर, डेटा स्टोर करने की एक से ज़्यादा जगहों या संगठनों को इंडेक्स कर सकता है. गड़बड़ी के असर को कम करने के लिए, एक बार में GitHub की एक रिपॉज़िटरी को ट्रेस किया जाता है. ट्रैवर्सल के नतीजों के साथ एक चेकपॉइंट दिखाया जाता है. इसमें getIds()
को किए जाने वाले बाद के कॉल में इंडेक्स किए जाने के लिए डेटा स्टोर करने की जगहों की सूची होती है. अगर कोई गड़बड़ी होती है, तो इंडेक्स को शुरू से शुरू करने के बजाय, डेटा स्टोर करने की मौजूदा जगह पर फिर से शुरू कर दिया जाता है.
collectRepositoryItems()
तरीका, एक GitHub रेपो के ट्रैवर्सल को मैनेज करता है. इस तरीके से, सूची में पुश किए जाने वाले आइटम को दिखाने वाले ApiOperations
का कलेक्शन दिखता है. आइटम को संसाधन के नाम और हैश वैल्यू के तौर पर पुश किया जाता है. इससे आइटम की मौजूदा स्थिति पता चलती है.
हैश वैल्यू का इस्तेमाल, GitHub डेटा स्टोर करने की जगहों के अगले ट्रैवर्सल में किया जाता है. इस वैल्यू से यह पता चलता है कि क्या कॉन्टेंट में कोई बदलाव हुआ है. इसके लिए, आपको और कॉन्टेंट अपलोड करने की ज़रूरत नहीं है. कनेक्टर बिना सोचे-समझे सभी आइटम की सूची बनाता है. अगर आइटम नया है या हैश की वैल्यू बदल गई है, तो इसे सूची में पोल कराने के लिए उपलब्ध कराया जाता है. ऐसा न होने पर, यह माना जाएगा कि आइटम में कोई बदलाव नहीं किया गया है.
सूची को प्रोसेस किया जा रहा है
पूरा ट्रेवर्सल पूरा होने के बाद, कनेक्टर उन आइटम की सूची की पोलिंग शुरू कर देता है जिन्हें इंडेक्स करना है. सूची से लिए गए हर आइटम के लिए, getDoc()
तरीके को कॉल किया जाता है. यह तरीका, GitHub से आइटम को पढ़ता है और उसे इंडेक्स करने के लिए सही तरीके में बदल देता है.
कनेक्टर लाइव डेटा के लिए काम कर रहा है, जिसे किसी भी समय बदला जा सकता है. getDoc()
भी पुष्टि करता है कि सूची में मौजूद आइटम अब भी मान्य है या नहीं. साथ ही, यह इंडेक्स से उन सभी आइटम को मिटा देता है जो अब मौजूद नहीं हैं.
हर GitHub ऑब्जेक्ट के लिए, कनेक्टर इंडेक्स करता है. उससे जुड़ा indexItem()
तरीका, Cloud Search में आइटम को दिखाने का काम मैनेज करता है. उदाहरण के लिए, कॉन्टेंट आइटम को बेहतर तरीके से दिखाना:
इसके बाद, सर्च इंटरफ़ेस डिप्लॉय करें.