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 Platform प्रोजेक्ट में सेवा खाते के क्रेडेंशियल मौजूद हैं. हालांकि, तीसरे पक्ष की सहायता शुरू करने के लिए, आपको वेब ऐप्लिकेशन के क्रेडेंशियल बनाने होंगे. वेब ऐप्लिकेशन के क्रेडेंशियल बनाने का तरीका जानने के लिए, क्रेडेंशियल बनाएं लेख पढ़ें. यह चरण पूरा करने के बाद, आपके पास क्लाइंट आईडी और क्लाइंट सीक्रेट फ़ाइल होनी चाहिए.
ऐक्सेस टोकन पाने के लिए, Google के OAuth 2 प्लेलैंड का इस्तेमाल करें:
- सेटिंग पर क्लिक करें और उपयोगकर्ता के पुष्टि करने के क्रेडेंशियल देखें.
- पहले चरण में दिए गए क्लाइंट आईडी और क्लाइंट सीक्रेट डालें.
- Close पर क्लिक करें.
- दायरों वाले फ़ील्ड में,
https://www.googleapis.com/auth/cloud_search.settings
लिखें और अनुमति दें पर क्लिक करें. 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 खोलें.
- ऐप्लिकेशन आइकॉन पर क्लिक करें. "ऐप्लिकेशन का एडमिन पेज" दिखेगा.
- 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.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
को इंस्टैंशिएट करता है और इसे शुरू करता है.
SDK टूल की मदद से उपलब्ध कराई गई ListingConnector
, इंडेक्स में मौजूद आइटम की स्थिति को ट्रैक करने के लिए, Cloud Search की सूचियों का फ़ायदा उठाकर, ट्रैवर्सल की रणनीति लागू करता है. यह GitHub से कॉन्टेंट ऐक्सेस करने के लिए, सैंपल कनेक्टर के ज़रिए लागू किए गए GithubRepository
को काम सौंपता है.
GitHub की रिपॉज़िटरी को ट्रैवर्स करना
पूरे ट्रैवर्स के दौरान, getIds()
तरीका उन आइटम को पुश करने के लिए बुलाया जाता है जिन्हें सूची में इंडेक्स करना पड़ सकता है.
कनेक्टर, कई रिपॉज़िटरी या संगठनों को इंडेक्स कर सकता है. किसी गड़बड़ी के असर को कम करने के लिए, एक बार में एक GitHub रिपॉज़िटरी को ट्रैवर्स किया जाता है. ट्रैवर्सल के नतीजों के साथ एक चेकपॉइंट दिखाया जाता है. इसमें getIds()
को बाद में किए जाने वाले कॉल में इंडेक्स किए जाने वाले रिपॉज़िटरी की सूची होती है. अगर कोई गड़बड़ी होती है, तो इंडेक्स करने की प्रोसेस फिर से शुरू करने के लिए, शुरुआत से नहीं बल्कि मौजूदा डेटा स्टोरेज से शुरू किया जाता है.
collectRepositoryItems()
वाला तरीका, किसी एक GitHub repo को ट्रैवर्स करता है. यह तरीका, सूची में डाले जाने वाले आइटम दिखाने वाले ApiOperations
का कलेक्शन दिखाता है. आइटम को संसाधन के नाम और हैश वैल्यू के तौर पर पुश किया जाता है. यह वैल्यू, आइटम की मौजूदा स्थिति दिखाती है.
हैश वैल्यू का इस्तेमाल, GitHub के रिपॉज़िटरी में फिर से ट्रैवल करने के लिए किया जाता है. इस वैल्यू से, तय की गई कनेक्टर, सभी आइटम को बिना किसी जानकारी के सूची में जोड़ देता है. अगर आइटम नया है या हैश वैल्यू बदल गई है, तो उसे सूची में पोलिंग के लिए उपलब्ध कराया जाता है. ऐसा न करने पर, आइटम को बिना बदलाव वाला माना जाएगा.
सूची को प्रोसेस किया जा रहा है
पूरी प्रोसेस पूरी होने के बाद, कनेक्टर उन आइटम के लिए सूची को पोल करने लगता है जिन्हें इंडेक्स करना है. सूची से लिए गए हर आइटम के लिए, getDoc()
तरीके को कॉल किया जाता है. यह तरीका, GitHub से आइटम को पढ़ता है और उसे इंडेक्स करने के लिए सही तरीके में बदल देता है.
कनेक्टर, लाइव डेटा के साथ काम करता है, जिसे किसी भी समय बदला जा सकता है. इसलिए, getDoc()
यह भी पुष्टि करता है कि सूची में मौजूद आइटम अब भी मान्य है या नहीं. साथ ही, इंडेक्स से ऐसे सभी आइटम मिटा देता है जो अब मौजूद नहीं हैं.
कनेक्टर, GitHub के हर उस ऑब्जेक्ट को इंडेक्स करता है जिसके लिए indexItem()
तरीका, Cloud Search के लिए आइटम का रेप्रज़ेंटेशन बनाने की प्रोसेस को मैनेज करता है. उदाहरण के लिए, कॉन्टेंट आइटम के लिए रेप्रज़ेंटेशन बनाने के लिए:
इसके बाद, सर्च इंटरफ़ेस डिप्लॉय करें.