Uyarı: Cloud Search referans bağlayıcıları "olduğu gibi" sağlanmıştır örnek kod olarak oluşturmanız gerekir. Bu örnek kod için gerekenler kavramın kanıtlanmasında kullanılmadan önce önemli özelleştirme ve test aşamalarının çok önemlidir. Üretimde kullanım için yardım almanız önemle tavsiye edilir. ile ilgili birçok inceleme yaptık. Uygun bir Cloud bulma konusunda daha fazla yardım almak için Arama Ağı iş ortağı, Google Hesap Yöneticinizle iletişime geçin. |
Kuruluşunuzun bilgilerindeki verileri keşfedip dizine eklemek için Google Cloud Search'ü Google Cloud Search veritabanı bağlayıcısını kullanarak veri tabanlarını yeniden düzenleyebilirsiniz.
Dikkat edilmesi gerekenler
Bağlayıcı hem interneti ve veritabanını içeriyor.
Sistem gereksinimleri
Sistem gereksinimleri | |
---|---|
İşletim sistemi | Windows veya Linux |
SQL veritabanı | JDBC 4.0 veya sonraki sürümlerle uyumlu bir sürücüye sahip, aşağıdakiler de dahil herhangi bir SQL veritabanı:
|
Yazılım | Veritabanına erişmek için bağlayıcının kullanacağı JDBC sürücüsü (ayrı olarak indirilir ve yüklenir) |
Bağlayıcıyı dağıtma
Aşağıdaki adımlarda bağlayıcının nasıl yükleneceği ve yapılandırılacağı açıklanmaktadır dizine eklemek ve sonuçları Cloud Search kullanıcılarına döndürmek için kullanılır.
Ön koşullar
Cloud Search veritabanı bağlayıcısını dağıtmadan önce aşağıdaki bilgileri toplayın:
- Hizmet hesabı kimliğini de içeren Google Workspace özel anahtarı. Özel anahtarı nasıl alacağınızı öğrenmek için şu adrese gidin: Google Cloud'a erişimi yapılandırma Arama REST API.
- Google Workspace veri kaynağı kimliği. Veri kaynağı kimliğini nasıl alacağınızı öğrenmek için şu sayfaya gidin: Arama yapmak için bir veri kaynağı ekleyin.
1. Adım: Veritabanı bağlayıcı yazılımını indirin ve derleyin
- GitHub'dan bağlayıcı deposunu klonlayın.
$ git clone https://github.com/google-cloudsearch/database-connector.git $ cd database-connector
- İstediğiniz bağlayıcı sürümü olup olmadığını kontrol edin:
$ git checkout tags/v1-0.0.3
- Bağlayıcıyı oluşturun.
Bağlayıcıyı oluştururken testleri atlamak için$ mvn package
mvn package -DskipTests
işlevini kullanın. - Bağlayıcı zip dosyasını yerel yükleme dizininize kopyalayın ve sıkıştırılmış dosyayı açın:
$ cp target/google-cloudsearch-database-connector-v1-0.0.3.zip installation-dir $ cd installation-dir $ unzip google-cloudsearch-database-connector-v1-0.0.3.zip $ cd google-cloudsearch-database-connector-v1-0.0.3
2. adım: Veritabanı bağlayıcısını yapılandırma
- Bir metin dosyası oluşturun ve dosyayı
connector-config.properties
(varsayılan) veya benzeri bir adla adlandırın. Google'ın önerisi yapılandırma dosyalarına.properties
veya.config
uzantısını ekleyin ve dosyayı bağlayıcıyla aynı dizinde tutun. Farklı bir ad veya yol kullanırsanız bağlayıcıyı çalıştırırken yolu belirtmeniz gerekir. - Parametreleri, dosya içeriğine anahtar/değer çiftleri olarak ekleyin. Yapılandırma dosyası şunu belirtmelidir:
veri kaynağı erişimi, veritabanı erişimi, veritabanı tam geçişi SQL ifadesi,
içerik alanı başlığı ve sütun tanımları. Diğer bağlayıcı davranışlarını da yapılandırabilirsiniz.
parametresini kullanabilirsiniz. Örneğin:
# Required parameters for data source access api.sourceId=1234567890abcdef api.identitySourceId=0987654321lmnopq api.serviceAccountPrivateKeyFile=./PrivateKey.json # # Required parameters for database access db.url=jdbc:mysql://localhost:3306/mysql_test db.user=root db.password=passw0rd # # Required full traversal SQL statement parameter db.allRecordsSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book # # Required parameters for column definitions and URL format db.allColumns=customer_id, first_name, last_name, phone, change_timestamp db.uniqueKeyColumns=customer_id url.columns=customer_id # # Required content field parameter contentTemplate.db.title=customer_id # # Optional parameters to set ACLs to "entire domain" access defaultAcl.mode=fallback defaultAcl.public=true # # Optional parameters for schedule traversals schedule.traversalIntervalSecs=36000 schedule.performTraversalOnStart=true schedule.incrementalTraversalIntervalSecs=3600
Veritabanına özgü parametrelerin ayrıntılı açıklamaları için Bu makalenin sonundaki Yapılandırma parametreleri referansı.
Tüm Cloud Search'te ortak olan parametreler hakkında bilgi edinmek için bağlayıcıları (ör. meta veri yapılandırması, tarih ve saat biçimleri ve EKL seçenekleri) Google tarafından sağlanan bağlayıcı parametreleri.
Mümkünse geçiş SQL'inde şema nesnesinin özelliklerini belirtin. sorgu parametreleridir. Genellikle SQL'e takma adlar ekleyebilirsiniz. ifade eder. Örneğin, bir film veri kaynağı şeması, adlı bir mülk tanımını "ActorName", bir SQL ifadesi şu biçimde olabilir:
SELECT …, last_name AS ActorName, … FROM …
.
3. Adım: Veritabanı bağlayıcısını çalıştırma
Aşağıdaki örnekte, gerekli bileşenlerin yerel dizini olur.
Bağlayıcıyı komut satırından çalıştırmak için aşağıdaki komutu girin:
java \ -cp "google-cloudsearch-database-connector-v1-0.0.3.jar:mysql-connector-java-5.1.41-bin.jar" \ com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector \ [-Dconfig=mysql.config]
Burada:
google-cloud-search-database-connector-v1-0.0.3.jar
veritabanı bağlayıcısı .jar dosyasımysql-connector-java-5.1.41-bin.jar
, kullanılan JDBC sürücüsü (veri tabanına erişmek için)mysql.config
, özel olarak adlandırılmış bir yapılandırma dosyasıdır. Bağlayıcının yapılandırma dosyasını yüklemek için komut satırındaki yolunu belirtin. Aksi halde, bağlayıcı Yerel para biriminizdeconnector-config.properties
dizinini varsayılan dosya adı olarak ayarlar.
Bağlayıcı, yapılandırma hatalarını algıladığında bunları bildirir. Bazı hatalar aşağıdaki durumlarda bildirilir
bağlayıcı başlatılırken (örneğin, bir veritabanı sütunu kayıt içeriğinin bir parçası olarak tanımlandığında)
(db.allColumns
içinde), ancak sütun
veritabanı (db.allRecordsSql
içinde). Diğer hatalar yalnızca şu durumlarda tespit edilir ve bildirilir:
bağlayıcı, geçersiz SQL ifadesi söz dizimi gibi ilk geçiş için veritabanına erişmeye çalışır.
Yapılandırma parametreleri referansı
Veri kaynağı erişim parametreleri
Yer | Parametre |
---|---|
Veri kaynağı kimliği | api.sourceId = source-ID
Zorunlu. Cloud Search Google Workspace yöneticisinin ayarladığı kaynak kimliği. |
Kimlik kaynağı kimliği | api.identitySourceId = identity-source-ID
EKL'ler için harici kullanıcıların ve grupların kullanılması gerekir. Cloud Search Google Workspace yöneticisinin ayarladığı kimlik kaynağı kimliği. |
Hizmet hesabı | api.serviceAccountPrivateKeyFile = path-to-private-key
Zorunlu. Cloud Search'e giden yol Google Workspace yöneticisinin oluşturduğu hizmet hesabı anahtar dosyası. |
Veritabanı erişim parametreleri
Yer | Parametre |
---|---|
Veritabanı URL'si | db.url = database-URL
Zorunlu. İlgili içeriği oluşturmak için kullanılan
|
Veritabanı kullanıcı adı ve şifresi | db.user = username db.password = password
Zorunlu. Geçerli bir kullanıcı adı ve bağlayıcının veritabanına erişmek için kullandığı şifredir. Bu veritabanı kullanıcısı, okunmakta olan veritabanının ilgili kayıtlarına okuma erişimine sahip olmalıdır. |
JDBC sürücüsü | db.driverClass = oracle.jdbc.OracleDriver
Yalnızca JDBC 4.0 sürücüsü sınıf yolunda önceden belirtilmemişse gereklidir. |
Geçiş SQL sorgu parametreleri
Bağlayıcı, SQL SELECT ile veritabanı kayıtları arasında gezinir sorgu sayısı. Tam geçiş sorgusu yapılandırmanız gerekir; sorgu artımlı geçişler isteğe bağlıdır.
Tam geçiş, dizine ekleme için yapılandırılan her veritabanı kaydını okur. Tam Cloud Search için yeni kayıtları dizine eklemek ve ayrıca yeniden dizine eklemek için geçiş gerekir Mevcut tüm kayıtlarda
Artımlı geçiş, yalnızca yeni değiştirilen veritabanını okur ve yeniden dizine ekler kayıtları ve son girişleri kapsar. Artımlı geçişler, tam geçişleri sağlar. Artımlı geçişleri kullanmak için veritabanınızın zaman damgası alanları içermesi gerekir kullanın.
Bağlayıcı, bu geçişleri geçiş zamanlaması parametrelerine dikkat edin.
Yer | Parametre |
---|---|
Tam geçiş sorgusu | db.allRecordsSql = SELECT column-1[, column-2,...] FROM database-name
Zorunlu. Her tam geçiş için çalıştırılan sorgu. Bağlayıcının kapasite (içerik, benzersiz kimlik, EKL'ler) bulunmalıdır. İlgili içeriği oluşturmak için kullanılan bağlayıcı, hataları algılamak için başlatma sırasında bazı ön doğrulamalar gerçekleştirir ve eksiklikler. Bu nedenle, genel "SELECT * FROM ..." koşulunu kullanmayın. emin olun. |
Tam geçiş sayfalandırması | db.allRecordsSql.pagination = {none | offset}
Değer şöyle olabilir:
|
Artımlı geçiş sorgusu | db.incrementalUpdateSql = SELECT column-1[, column-2,...] FROM database-name WHERE last_update_time > ?
Artımlı geçişler planlarsanız gereklidir. "?" değeri, zaman damgası değeri için zorunlu bir yer tutucudur. İlgili içeriği oluşturmak için kullanılan bağlayıcısı, artımlı geçiş SQL sorguları arasındaki değişiklikleri izlemek için zaman damgasını kullanır. Son güncelleme zamanına ait veritabanı zaman damgası sütununu izlemek için
SQL ifadesi için İlk artımlı geçiş için bağlayıcı, bağlayıcının başlangıç zamanını kullanır. ilk artımlı geçişi içeriyorsa Cloud Search, zaman damgasını saklar. bağlayıcı yeniden başlatmalarının önceki artımlı geçişe [timestamp]. |
Veritabanı saat dilimi | db.timestamp.timezone = America/Los_Angeles
Veritabanı zaman damgaları için kullanılacak saat dilimini belirtir. Yeni kayıt eklemelerini veya yeni kayıt eklemelerini tanımlamak için kullanılan veritabanı zaman damgası emin olun. Varsayılan değer, bağlayıcının çalıştırıldığı yerel saat dilimidir. |
Geçiş SQL sorgu örnekleri
- Dizine eklemek üzere çalışan veritabanındaki her önemli kaydı okuyan temel tam geçiş sorgusu:
db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee
- Ofsete göre sayfalandırmayı belirtin ve bir tam geçişi birden fazla sorguya ayırın.
SQL Server 2012 veya Oracle 12c için (standart SQL 2008 söz dizimi):
db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee \ ORDER BY customer_id OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY db.allRecordsSql.pagination = offset
veya MySQL ya da Google Cloud SQL için:
db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee \ ORDER BY customer_id LIMIT 1000 OFFSET ? db.allRecordsSql.pagination = offset
- Takma adlarla EKL'leri tek tek uygulayan tam geçiş sorgusu:
db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, \ permitted_readers AS readers_users, \ denied_readers AS denied_users, \ permitted_groups AS readers_groups, \ denied_groups AS denied_groups \ FROM employee
- Temel artımlı geçiş sorgusu:
db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time \ FROM employee \ WHERE last_update_time > ?
- Takma adlarla ayrı EKL'leri uygulayan artımlı geçiş sorgusu:
db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, \ permitted_readers AS readers_users, \ denied_readers AS denied_users, \ permitted_groups AS readers_groups, \ denied_groups AS denied_groups \ FROM employee \ WHERE last_update_time > ?
- Geçerli zaman yerine veritabanı zaman damgasını kullanan artımlı geçiş sorgusu:
db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, \ last_update_time AS timestamp_column \ FROM employee \ WHERE last_update_time > ?
Sütun tanımı parametreleri
Aşağıdaki parametreler, geçiş ifadelerinde kullandığınız sütunları belirtir ve benzersiz bir şekilde tanımlar.
Yer | Parametre |
---|---|
Tüm sütunlar | db.allColumns = column-1, column-2, ...column-N
Zorunlu. Tüm sütunları tanımlar Bunlar, veritabanına erişirken SQL sorgusunda gereklidir. Sütunlar bu parametreyle tanımlanan tüm özelliklere sorgularda açıkça referans verilmelidir. Hepsini diğer sütun tanımı parametresi bu sütun grubuyla karşılaştırılır. Örnek: db.allColumns = customer_id, first_name, last_name, phone, change_timestamp |
Benzersiz anahtar sütunları | db.uniqueKeyColumns = column-1[, column-2]
Zorunlu. Şunlardan birini listeler: tek bir veritabanı sütunu olabilir. Sütun, değerleri birlikte benzersiz bir kimlik tanımlayan sütunlar. Cloud Search, aranabilir her belgenin benzersiz bir tanımlayıcıya sahip olmasını gerektirir. tek bir veri kaynağında olması gerekir. Her veritabanı kaydı için benzersiz bir kimlik tanımlayabilmeniz gerekir kaldırın. Ayrı veritabanlarında birden fazla bağlayıcı çalıştırıyorsanız ortak bir veri kümesi kullanıyorsanız benzersiz bir kimlik belirttiğinizden emin olun tüm dokümanlarda sağlayın. Örnekler: db.uniqueKeyColumns = customer_id # or db.uniqueKeyColumns = last_name, first_name |
URL bağlantısı sütunu | url.columns = column-1[, column-2]
Zorunlu. Tanımlanmış bir veya daha fazla geçerli tıklanabilir arama sonucu için kullanılan URL için kullanılan sütunların adları. Her veritabanı kaydı ile ilişkili alakalı bir URL'ye sahip olmayan veritabanları için bir statik bağlantı her kayıt için kullanılabilir. Bununla birlikte, sütun değerleri her kayıt için geçerli bir bağlantı tanımlarsa, görünüm URL sütunları ve biçim yapılandırma değerleri belirtilmelidir. |
URL biçimi | url.format = https://www.example.com/{0}
Görüntüleme URL'sinin biçimini tanımlar. Numaralı parametreler, db.columns sütununda sıfır ile başlayacak şekilde belirtilir. Belirtilmezse varsayılan olarak "{0}" kullanılır. Örnekler aşağıdaki tabloda verilmiştir. |
URL için yüzde olarak kodlanmış sütunlar | url.columnsToEscape = column-1[, column-2]
db.columns sütununda değerleri yüzde olarak kodlanacak sütunları belirtir biçimlendirilmiş URL dizesine eklemeden önce |
URL sütunu örnekleri
Geçiş sorgularında kullanılan sütunları ve görüntüleme URL'sinin biçimini belirtmek için:
- Herhangi bir veritabanı kaydı değeri kullanmadan statik URL kullanmak için:
url.format = https://www.example.com
- Görüntüleme URL'si olan tek bir sütun değeri kullanmak için:
url.format = {0} url.columns = customer_id
- {0} konumundaki görüntüleme URL'siyle değiştirilecek tek bir sütun değeri kullanmak için:
url.format = https://www.example.com/customer/id={0} url.columns = customer_id url.columnsToEscape = customer_id
- Görüntüleme URL'sini oluşturmak üzere birden çok sütun değeri kullanmak için (sütunlar sıraya bağlıdır):
url.format = {1}/customer={0} url.columns = customer_id, linked_url url.columnsToEscape = customer_id
İçerik alanları
Hangi kayıt değerlerini tanımlamak için içerik seçeneklerini kullanın aranabilir içeriğin bir parçası haline getirilmelidir.
Yer | Parametre |
---|---|
En yüksek kaliteli arama sütunu | contentTemplate.db.title = column-name
Zorunlu. Arama dizine ekleme ve sonuç önceliklendirme için en yüksek kaliteli sütun. |
Arama için sütun önceliklendirme | contentTemplate.db.quality.high = column-1[, column-2...] contentTemplate.db.quality.medium = column-1[, column-2...] contentTemplate.db.quality.low = column-1[, column-2...]
İçerik sütunlarını belirt ( |
İçerik verisi sütunları | db.contentColumns = column-1[, column-2...]
Veritabanındaki içerik sütunlarını belirtin. Bunlar biçimlendirilmiş ve Cloud Search'e, aranabilir belge içeriği olarak yüklenir. Bir değer belirtmezseniz varsayılan olarak "*" kullanılır Bu örnekte tüm sütunları içerik için kullanılmalıdır. |
Blob sütunu | db.blobColumn = column-name
Tek bir blobun adını belirtme içerik sütunlarının bir kombinasyonu yerine doküman içeriği için kullanılacak sütunu seçin. Bir blob sütunu belirtilirse içerik sütunlarının bu bir hata olarak kabul edilmesi tanımlanmıştır. Ancak meta veri ve yapılandırılmış veri sütunu tanımları blob sütunlarıyla birlikte kullanılmasına izin verilir. |