Cloud Search eğiticisinin bu sayfasında, verileri dizine eklemek 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ıyı 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 gerekli bağımlılıkları indirir ve kodu derler.
Hizmet hesabı kimlik bilgileri oluşturma
Bağlayıcının, Cloud Search API'lerini çağırmak için hizmet hesabı kimlik bilgilerini kullanması gerekir. Kimlik bilgilerini oluşturmak için:
- Google Cloud Console'a dönün.
- Sol gezinme menüsünde, Credentials (Kimlik bilgileri) seçeneğini tıklayın. "Kimlik bilgileri" sayfası görünür.
- + KİMLİK BİLGİLERİ OLUŞTUR açılır listesini tıklayın ve Hizmet hesabı'nı seçin. "Hizmet hesabı oluştur" sayfası görüntülenir.
- Service account name (Hizmet hesabı adı) alanına "tutorial" yazın.
- Hizmet hesabı kimliği değerini (Hizmet hesabı adından hemen sonra) not edin. Bu değer daha sonra kullanılır.
- CREATE'ı (OLUŞTUR) 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şmelerine izin ver (isteğe bağlı)" iletişim kutusu görünür.
- BİTTİ'yi tıklayın. "Kimlik bilgileri" ekranı görünür.
- Hizmet Hesapları bölümünde, hizmet hesabı e-postasını tıklayın. "Hizmet hesabı ayrıntıları" sayfası düzeltilir.
- Anahtarlar bölümünün altında 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.
- CREATE'ı (OLUŞTUR) tıklayın.
- (isteğe bağlı) "console.cloud.google.com üzerinden indirme işlemlerine 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 konumunu not edin. Bu dosya, Google Cloud Search API'lerini çağırırken kendi kimliğini doğrulayabilmesi için içerik bağlayıcısını yapılandırmak için kullanılır.
Üçüncü taraf desteğini başlatma
Diğer Cloud Search API'lerini çağırabilmeniz için öncelikle Google Cloud Search'e yönelik üçüncü taraf desteğini başlatmanız gerekir.
Cloud Search için üçüncü taraf desteğini başlatmak amacıyla:
Cloud Search platform projeniz hizmet hesabı kimlik bilgileri içeriyor. 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ğıyla ilgili talimatlar için Kimlik bilgileri oluşturma konusuna bakın. Bu adımı tamamladıktan sonra elinizde bir istemci kimliği ve istemci gizli anahtarı olacaktır.
Erişim jetonu almak için Google'ın OAuth 2 oyun alanını kullanın:
- Ayarları tıklayın ve Kullanıcı için 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ın ve Yetkilendir'i tıklayın. OAuth 2 oynatma listesi, 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 amacıyla aşağıdaki curl komutunu kullanın.
[YOUR_ACCESS_TOKEN]
kısmını 2. adımda aldığınız jetonla değiştirdiğinizden emin olun.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ğinin 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 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çeriklerin 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ünür.
- Google Workspace'i tıklayın. "Uygulamalardaki 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ı + işaretini tıklayın. "Yeni veri kaynağı ekle" iletişim kutusu görünür.
- Görünen ad alanına "tutorial" 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ği'ni 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şturma
Bağlayıcının, yeterli kotaya sahip olması için GitHub API'ye kimliği doğrulanmış erişim sağlaması gerekir. Bağlayıcı, basitlik açısından OAuth yerine kişisel erişim jetonlarını kullanır. Kişisel jetonlar, OAuth'a benzer sınırlı izin grubuna sahip kullanıcı olarak kimlik doğrulaması yapılmasına olanak tanır.
- GitHub'a giriş yapın.
- Sağ üst köşeden profil resminizi tıklayın. Bir açılır menü görüntülenir.
- Ayarlar'ı tıklayın.
- Geliştirici ayarları'nı tıklayın.
- Kişisel erişim jetonları'nı tıklayın.
- Kişisel erişim jetonu oluştur'u tıklayın.
- Not alanına "Cloud Search eğiticisi" yazın.
- public_repo kapsamını kontrol edin.
- Jeton oluştur'u tıklayın.
- Oluşturulan jetonu not edin. Bu API, bağlayıcı tarafından GitHub API'lerini ç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ı şu değerleri içerecek şekilde güncelleyin:
- Komut satırından dizini
cloud-search-samples/end-to-end/connector/
olarak değiştirin. sample-config.properties
dosyasını bir metin düzenleyiciyle 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ğına ait şemayı 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ırmak ve 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ı için varsayılan yapılandırma, 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ı, Cloud Search dizinine yansıtılması gereken depo değişiklikleri için yoklama yapmaya devam eder.
Kodu inceleme
Geri kalan bölümlerde bağlayıcının nasıl oluşturulduğu incelenir.
Uygulamayı başlatma
Bağlayıcının giriş noktası GithubConnector
sınıfıdır. main
yöntemi, SDK'nın IndexingApplication
değerini somutlaştırır 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
ağına yetki verir.
GitHub depolarını geçme
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 depo veya kuruluşu dizine ekleyebilir. Bir hatanın etkisini en aza indirmek için her defasında bir GitHub deposuna geçiş yapılır. getIds()
için yapılan sonraki çağrılarda dizine eklenecek depoların listesini içeren geçişin sonuçlarıyla bir kontrol noktası döndürülür. Hata oluşursa dizine ekleme baştan başlamak yerine mevcut depoda devam ettirilir.
collectRepositoryItems()
yöntemi tek bir GitHub deposu geçişini işler. Bu yöntem, sıraya aktarılacak öğeleri temsil eden bir ApiOperations
koleksiyonu 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ı körü körüne tüm öğeleri sıraya alır. Öğe yeniyse veya karma değeri değiştiyse sıradaki yoklama için kullanılabilir hale gelir. Aksi takdirde, öğe değiştirilmemiş 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. Bu yöntem, öğeyi GitHub'dan okur ve dizine ekleme için uygun temsile dönüştürür.
Bağlayıcı herhangi bir zamanda değiştirilebilen canlı verilere karşı çalıştığından getDoc()
, sıradaki öğenin hâlâ geçerli olduğunu da doğrular ve artık var olmayan tüm öğeleri dizinden siler.
Bağlayıcının dizine eklediği GitHub nesnelerinin her biri için karşılık gelen indexItem()
yöntemi, Cloud Search için öğe temsilini oluşturur. Örneğin, içerik öğelerinin temsilini oluşturmak için:
Ardından, arama arayüzünü dağıtın.