Cloud Search eğiticisinin bu sayfasında, verileri dizine ekleme için bir veri kaynağının ve içerik bağlayıcısının nasıl oluşturulacağı gösterilmektedir. Bu eğiticinin başından başlamak için Cloud Search başlangıç eğitimine bakın.
Bağlayıcı oluşturma
Çalışma dizininizi cloud-search-samples/end-to-end/connector
dizini olarak değiştirin ve şu komutu çalıştırın:
mvn package -DskipTests
Komut, içerik bağlayıcısını oluşturmak için gereken bağımlılıkları indirir ve kodu derler.
Hizmet hesabı kimlik bilgileri oluşturma
Bağlayıcı, Cloud Search API'leri çağırmak için hizmet hesabı kimlik bilgileri gerektirir. Kimlik bilgilerini oluşturmak için:
- Google Cloud Console'a dönün.
- Soldaki gezinme panelinde Credentials'ı (Kimlik bilgileri) tıklayın. "Credential" (Kimlik Bilgisi) sayfası görüntülenir.
- + KİMLİK BİLGİLERİ OLUŞTUR açılır listesini tıklayıp Hizmet hesabı'nı seçin. "Hizmet hesabı oluştur" sayfası görünür.
- Hizmet hesabı adı alanına "tutorial" yazın.
- Hizmet hesabı kimliği değerini not edin (Hizmet hesabı adından hemen sonra). Bu değer daha sonra kullanılır.
- OLUŞTUR'u tıklayın. "Hizmet hesabı izinleri (isteğe bağlı)" iletişim kutusu görünür.
- DEVAM'ı tıklayın. "Kullanıcıların bu hizmet hesabına erişmesine izin ver (isteğe bağlı)" iletişim kutusu görünür.
- BİTTİ'yi tıklayın. "Credentials" (Kimlik bilgileri) ekranı görüntülenir.
- Hizmet Hesapları bölümünde, hizmet hesabı e-posta adresini tıklayın. "Hizmet hesabı ayrıntıları" sayfası görüntülenir.
- Anahtarlar bölümünde ANAHTAR EKLE açılır listesini tıklayın ve Yeni anahtar oluştur'u seçin. "Özel anahtar oluştur" iletişim kutusu görünür.
- OLUŞTUR'u tıklayın.
- (İsteğe bağlı) "console.cloud.google.com adresinde indirmelere izin vermek istiyor musunuz?" iletişim kutusu görünürse İzin ver'i tıklayın.
- Özel anahtar dosyası bilgisayarınıza kaydedilir. İndirilen dosyanın konumuna dikkat edin. Bu dosya, içerik bağlayıcısını Google Cloud Search API'lerini çağırırken kendi kimliğini doğrulayabilmesi amacıyla yapılandırmak için kullanılır.
Üçüncü taraf desteğini başlatma
Başka bir Cloud Search API'sini çağırabilmek için öncelikle Google Cloud Search için üçüncü taraf desteğini başlatmanız gerekir.
Cloud Search için üçüncü taraf desteğini başlatmak için:
Cloud Search platform projenizde hizmet hesabı kimlik bilgileri bulunuyor. Ancak üçüncü taraf desteğini başlatmak için web uygulaması kimlik bilgileri oluşturmanız gerekir. Web uygulaması kimlik bilgilerinin nasıl oluşturulacağına ilişkin talimatlar için Kimlik bilgileri oluşturma bölümüne bakın. Bu adımı tamamladıktan sonra, bir istemci kimliği ve istemci gizli anahtarı dosyanız olmalıdır.
Erişim jetonu almak için Google'ın OAuth 2 oyun alanını kullanın:
- Ayarlar'ı tıklayın ve Kendi kimlik doğrulama bilgilerinizi kullanın seçeneğini işaretleyin.
- 1. adımdaki istemci kimliğini ve istemci gizli anahtarını girin.
- Close'u (Kapat) tıklayın.
- Kapsamlar alanına
https://www.googleapis.com/auth/cloud_search.settings
yazıp Yetkilendir'i tıklayın. OAuth 2 oyun alanı bir yetkilendirme kodu döndürür. - Jetonlar için yetkilendirme kodu değiş tokuşu yap seçeneğini tıklayın Bir jeton döndürülür.
Cloud Search için üçüncü taraf desteğini başlatmak istiyorsanız aşağıdaki curl komutunu kullanın.
[YOUR_ACCESS_TOKEN]
yerine 2. adımda elde ettiğiniz jetonla değiştirin.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
Başarılı olursa yanıt gövdesi,
operation
öğesinin bir örneğini içerir. Örneğin:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" }
Başarısız olursa Cloud Search destek ekibiyle iletişime geçin.
Üçüncü taraf desteğin başlatıldığını doğrulamak için operations.get dosyasını kullanın:
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
Üçüncü taraf başlatma işlemi tamamlandığında
true
olarak ayarlanmışdone
alanını içerir. Örneğin:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" done: true }
Veri kaynağını oluşturma
Ardından, Yönetici Konsolu'nda bir veri kaynağı oluşturun. Veri kaynağı, bağlayıcıyı kullanarak içeriğin dizine eklenmesi için bir ad alanı sağlar.
- Google Yönetici konsolunu açın.
- Uygulamalar simgesini tıklayın. "Uygulama yönetimi" sayfası görüntülenir.
- Google Workspace'i tıklayın. "Uygulamalar Google Workspace yönetimi" sayfası görünür.
- Aşağı kaydırın ve Cloud Search'ü tıklayın. "Google Workspace Ayarları" sayfası görünür.
- Üçüncü taraf veri kaynakları'nı tıklayın. "Veri Kaynakları" sayfası görüntülenir.
- Yuvarlak sarı renkli + simgesini tıklayın. "Yeni veri kaynağı ekle" iletişim kutusu görünür.
- Görünen ad alanına "eğitim" yazın.
- Hizmet hesabı e-posta adresleri alanına, bir önceki bölümde oluşturduğunuz hizmet hesabının e-posta adresini girin. Hizmet hesabının e-posta adresini bilmiyorsanız hizmet hesapları sayfasında değeri arayın.
- EKLE'yi tıklayın. "Veri kaynağı başarıyla oluşturuldu" iletişim kutusu görünür.
- *Tamam'ı tıklayın. Yeni oluşturulan veri kaynağının kaynak kimliğini not edin. Kaynak kimliği, içerik bağlayıcısını yapılandırmak için kullanılır.
GitHub API için kişisel erişim jetonu oluşturun
Bağlayıcının, yeterli kotaya sahip olması için GitHub API'ye kimliği doğrulanmış erişimi olması gerekir. Kolaylık olması için bağlayıcı, OAuth yerine kişisel erişim jetonlarını kullanır. Kişisel jetonlar, OAuth'a benzer şekilde, sınırlı bir izin grubuna sahip bir kullanıcı olarak kimlik doğrulamasına olanak tanır.
- GitHub'a giriş yapın.
- Sağ üst köşedeki profil resminizi tıklayın. Bir açılır menü görünür.
- Ayarlar'ı tıklayın.
- Geliştirici ayarları'nı tıklayın.
- Kişisel erişim jetonları'nı tıklayın.
- Generate Personal access token (Kişisel erişim jetonu oluştur) seçeneğini tıklayın.
- Not alanına "Cloud Search tutorial" yazın.
- public_repo kapsamını kontrol edin.
- Generate token (Jeton oluştur) seçeneğini tıklayın.
- Oluşturulan jetonu not edin. Bağlayıcı tarafından GitHub API'leri çağırmak için kullanılır ve dizine ekleme işlemini gerçekleştirmek için API kotası sağlar.
Bağlayıcıyı yapılandırma
Kimlik bilgilerini ve veri kaynağını oluşturduktan sonra, bağlayıcı yapılandırmasını aşağıdaki değerleri içerecek şekilde güncelleyin:
- Komut satırında dizini
cloud-search-samples/end-to-end/connector/
olarak değiştirin. sample-config.properties
dosyasını bir metin düzenleyicide açın.api.serviceAccountPrivateKeyFile
parametresini, daha önce indirdiğiniz hizmet kimlik bilgilerinin dosya yoluna ayarlayın.api.sourceId
parametresini, daha önce oluşturduğunuz veri kaynağının kimliğine ayarlayın.github.user
parametresini GitHub kullanıcı adınıza ayarlayın.github.token
parametresini, daha önce oluşturduğunuz erişim jetonuna ayarlayın.- Dosyayı kaydedin.
Şemayı güncelleme
Bağlayıcı hem yapılandırılmış hem de yapılandırılmamış içeriği dizine ekler. Verileri dizine eklemeden önce, veri kaynağının şemasını güncellemeniz gerekir. Şemayı güncellemek için aşağıdaki komutu çalıştırın:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.SchemaTool \
-Dexec.args="-Dconfig=sample-config.properties"
Bağlayıcıyı çalıştırma
Bağlayıcıyı çalıştırıp dizine eklemeye başlamak için şu komutu çalıştırın:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.GithubConnector \
-Dexec.args="-Dconfig=sample-config.properties"
Bağlayıcının varsayılan yapılandırması, googleworkspace
kuruluşundaki tek bir depoyu dizine eklemektir. Deponun dizine eklenmesi yaklaşık 1 dakika sürer.
İlk dizine ekleme işleminden sonra bağlayıcı, depoda yapılan ve Cloud Search dizinine yansıtılması gereken değişiklikleri yoklamaya devam eder.
Kodu inceleme
Geri kalan bölümlerde bağlayıcının nasıl oluşturulduğu incelenmektedir.
Uygulama başlatılıyor
Bağlayıcının giriş noktası GithubConnector
sınıfıdır. main
yöntemi, SDK'nın IndexingApplication
örneğini oluşturur ve başlatır.
SDK tarafından sağlanan ListingConnector
, dizindeki öğelerin durumunu izlemek için Cloud Search sıralarından yararlanan bir geçiş stratejisi uygular. GitHub'daki içeriğe erişmek için örnek bağlayıcı tarafından uygulanan GithubRepository
öğesine yetki verir.
GitHub depolarında gezinme
Tam geçişler sırasında, dizine eklenmesi gerekebilecek öğeleri sıraya aktarmak için getIds()
yöntemi çağrılır.
Bağlayıcı, birden fazla depoyu veya kuruluşu dizine ekleyebilir. Bir hatanın etkisini incelemek için her defasında bir GitHub deposuna geçilir. Geçişin sonuçlarıyla birlikte, getIds()
'e yapılan sonraki çağrılarda dizine eklenecek depoların listesini içeren bir kontrol noktası döndürülür. Bir hata oluşursa dizine ekleme işlemi, baştan başlamak yerine mevcut depoda devam ettirilir.
collectRepositoryItems()
yöntemi, tek bir GitHub deposunun geçişini işler. Bu yöntem, sıraya aktarılacak öğeleri temsil eden bir ApiOperations
koleksiyonunu döndürür. Öğeler, kaynak adı ve öğenin mevcut durumunu temsil eden bir karma değeri olarak aktarılır.
Karma değeri, GitHub depolarının sonraki geçişlerinde kullanılır. Bu değer, ek içerik yüklemek zorunda kalmadan içeriğin değişip değişmediğini belirlemek için basit bir kontrol sağlar. Bağlayıcı, tüm öğeleri gizli bir şekilde sıraya koyar. Öğe yeniyse veya karma değeri değiştiyse sırada yoklama için kullanılabilir. Aksi takdirde, öğe değiştirilmemiş olarak kabul edilir.
Sıra işleniyor
Tam geçiş tamamlandıktan sonra bağlayıcı, dizine eklenmesi gereken öğeler için sırayı yoklamaya başlar. getDoc()
yöntemi, sıradan alınan her öğe için çağrılır. Yöntem, GitHub'daki öğeyi okur ve dizine ekleme için uygun temsile dönüştürür.
Bağlayıcı, herhangi bir zamanda değiştirilebilecek canlı verilerle çalışırken getDoc()
, sıradaki öğenin hâlâ geçerli olduğunu doğrular ve artık mevcut olmayan tüm öğeleri dizinden siler.
Bağlayıcı dizinlerindeki her bir GitHub nesnesi için ilgili indexItem()
yöntemi, Cloud Search için öğe temsilini oluşturma işini ele alır. Örneğin, içerik öğelerinin temsilini oluşturmak için:
Ardından, arama arayüzünü dağıtın.