Warnung: Die Cloud Search-Referenz-Connectors werden ohne Mängelgewähr zur Verfügung gestellt als Beispielcode um eigene funktionierende Connectors zu erstellen. Dieser Beispielcode erfordert umfangreiche Anpassungen und Tests durchzuführen, bevor sie als Proof of Concept oder Produktionsumgebungen. Für den Einsatz in der Produktion empfehlen wir dringend, sich an Hilfe zu wenden. von einem unserer Cloud Search-Partner. Weitere Unterstützung bei der Suche nach einer geeigneten Cloud Wenn Sie Suchnetzwerk-Partner einbeziehen, wenden Sie sich an Ihren Google Account Manager. |
Sie können Google Cloud Search so einrichten, dass Daten in den Datenbanken mithilfe des Datenbank-Connectors von Google Cloud Search.
Wichtige Aspekte
Sie können den Cloud Search-Datenbankconnector in fast jeder Umgebung installieren und ausführen, in der Java-Anwendungen ausgeführt werden können. Voraussetzung ist, dass der Connector Zugriff auf beides hat. dem Internet und der Datenbank.
Systemanforderungen
Systemanforderungen | |
---|---|
Betriebssystem | Windows oder Linux |
SQL-Datenbank | Jede SQL-Datenbank mit einem kompatiblen Treiber für JDBC 4.0 oder höher, einschließlich der folgenden: <ph type="x-smartling-placeholder">
|
Software | JDBC-Treiber für den Connector für den Zugriff auf die Datenbank (separat heruntergeladen und installiert) |
Connector bereitstellen
In den folgenden Schritten wird beschrieben, wie Sie den Connector installieren und konfigurieren. die angegebenen Datenbanken zu indexieren und die Ergebnisse an Cloud Search-Nutzer zurückzugeben.
Vorbereitung
Stellen Sie vor der Bereitstellung des Cloud Search-Datenbankconnectors die folgenden Informationen zusammen:
- Privater Google Workspace-Schlüssel, der auch die Dienstkonto-ID enthält. Informationen zum Abrufen eines privaten Schlüssels finden Sie unter Zugriff auf die Google Cloud konfigurieren Search REST API.
- ID der Google Workspace-Datenquelle. Informationen zum Abrufen einer Datenquellen-ID finden Sie unter Fügen Sie eine Datenquelle für die Suche hinzu.
Schritt 1: Software für den Datenbank-Connector herunterladen und erstellen
- Klonen Sie das Connector-Repository von GitHub.
$ git clone https://github.com/google-cloudsearch/database-connector.git $ cd database-connector
- Sehen Sie sich die gewünschte Version des Connectors an:
$ git checkout tags/v1-0.0.3
- Erstellen Sie den Connector.
$ mvn package
Wenn Sie die Tests beim Erstellen des Connectors überspringen möchten, verwenden Siemvn package -DskipTests
. - Kopieren Sie die ZIP-Datei des Connectors in Ihr lokales Installationsverzeichnis und entpacken Sie sie:
$ 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
Schritt 2: Datenbank-Connector konfigurieren
- Erstellen Sie eine Textdatei und nennen Sie sie
connector-config.properties
(Standardeinstellung) oder ähnlich. Google empfiehlt dass Sie Konfigurationsdateien mit dem.properties
benennen, oder.config
und belassen Sie die Datei im selben Verzeichnis wie der Connector. Falls Sie einen anderen Namen oder Pfad verwenden, müssen Sie den Pfad beim Ausführen des Connectors angeben. - Fügen Sie dem Dateiinhalt Parameter als Schlüssel/Wert-Paare hinzu. In der Konfigurationsdatei muss Folgendes angegeben werden:
die Parameter für den Zugriff auf Datenquellen,
den Datenbankzugriff, eine SQL-Anweisung für den vollständigen Durchlauf
den Titel des Inhaltsfelds und Spaltendefinitionen. Sie können auch ein anderes Connector-Verhalten konfigurieren
mit optionalen Parametern. Hier einige Beispiele:
# 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
Ausführliche Beschreibungen der datenbankspezifischen Parameter finden Sie in der Referenz zu den Konfigurationsparametern am Ende dieses Artikels.
Weitere Informationen zu den Parametern, die für alle Cloud Search-Anwendungen gelten Connectors wie Metadatenkonfiguration, Datums-/Uhrzeitformate und ACL-Optionen <ph type="x-smartling-placeholder"></ph> Von Google bereitgestellte Connector-Parameter.
Geben Sie gegebenenfalls Attribute des Schemaobjekts in der Durchlauf-SQL an. Suchparametern. Normalerweise können Sie dem SQL-Code . Wenn Sie z. B. einen Film haben, Datenbank und das Schema der Datenquelle eine Property-Definition mit dem Namen „ActorName“ verwenden, könnte eine SQL-Anweisung das Format
SELECT …, last_name AS ActorName, … FROM …
haben.
Schritt 3: Datenbank-Connector ausführen
Im folgenden Beispiel wird davon ausgegangen, dass sich die erforderlichen Komponenten in der lokalen auf einem Linux-System.
Geben Sie den folgenden Befehl ein, um den Connector über die Befehlszeile auszuführen:
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]
Wobei:
google-cloud-search-database-connector-v1-0.0.3.jar
ist die JAR-Datei des Datenbank-Connectorsmysql-connector-java-5.1.41-bin.jar
ist der verwendete JDBC-Treiber für den Zugriff auf die Datenbankmysql.config
ist eine benutzerdefinierte Konfigurationsdatei. Um sicherzustellen, dass der Connector Ihre Konfigurationsdatei ihren Pfad in der Befehlszeile angeben. Andernfalls verwendet der Connectorconnector-config.properties
in Ihrer Region als Standarddateiname.
Der Connector meldet Konfigurationsfehler, sobald er sie erkennt. Einige Fehler werden gemeldet, wenn
vom Connector initialisiert wird, z. B. wenn eine Datenbankspalte als Teil des Eintragsinhalts definiert ist
(in db.allColumns
), aber die Spalte wird nicht in der Durchlauf-SQL-Abfrage der
Datenbank (in db.allRecordsSql
). Andere Fehler werden nur erkannt und gemeldet, wenn
Der Connector versucht, für den ersten Durchlauf auf die Datenbank zuzugreifen, beispielsweise eine ungültige SQL-Anweisung in der Syntax.
Referenz zu Konfigurationsparametern
Parameter für den Zugriff auf Datenquellen
Einstellung | Parameter |
---|---|
Datenquellen-ID | api.sourceId = source-ID
Erforderlich. Cloud Search Quell-ID, die der Google Workspace-Administrator eingerichtet hat. |
ID der Identitätsquelle | api.identitySourceId = identity-source-ID
Erforderlich, um externe Nutzer und Gruppen für ACLs zu verwenden. Cloud Search ID der Identitätsquelle, die der Google Workspace-Administrator eingerichtet hat. |
Dienstkonto | api.serviceAccountPrivateKeyFile = path-to-private-key
Erforderlich. Der Pfad zu Cloud Search Dienstkontoschlüsseldatei, die der Google Workspace-Administrator erstellt hat. |
Parameter für den Datenbankzugriff
Einstellung | Parameter |
---|---|
Datenbank-URL | db.url = database-URL
Erforderlich. Die
vollständiger Pfad der Datenbank, auf die zugegriffen werden soll, z. B. |
Nutzername und Passwort für die Datenbank | db.user = username db.password = password
Erforderlich. Einen gültigen Nutzernamen und Passwort, mit dem der Connector auf die Datenbank zugreift. Dieser Datenbanknutzer muss Lesezugriff auf die relevanten Datensätze der zu lesenden Datenbank haben. |
JDBC-Treiber | db.driverClass = oracle.jdbc.OracleDriver
Nur erforderlich, wenn der JDBC 4.0-Treiber nicht bereits im Klassenpfad angegeben ist. |
Durchlauf-SQL-Abfrageparameter
Der Connector durchsucht Datenbankeinträge mit SQL SELECT Abfragen in der Konfigurationsdatei. Sie müssen eine Abfrage für den vollständigen Durchlauf konfigurieren. Abfragen für inkrementelle Durchläufe sind optional.
Bei einem Durchlauf mit vollständiger Indexierung werden alle Datensätze gelesen, die für die Indexierung konfiguriert sind. Eine vollständige Durchlauf ist erforderlich, um neue Datensätze für Cloud Search zu indexieren und neu zu indexieren alle vorhandenen Datensätze.
Bei einem inkrementellen Durchlauf werden nur neu geänderte Datenbanken gelesen und neu indexiert Datensätze und neue Einträge in der Datenbank enthalten. Inkrementelle Durchläufe können effizienter sein als vollständigen Durchläufen. Ihre Datenbank muss Zeitstempelfelder enthalten, um Durchläufe mit Teilindexierung zu verwenden um auf geänderte Einträge hinzuweisen.
Der Connector führt diese Durchläufe gemäß den Zeitplänen aus, die Sie in den Durchlaufzeitplan
Einstellung | Parameter |
---|---|
Abfrage für vollständigen Durchlauf | db.allRecordsSql = SELECT column-1[, column-2,...] FROM database-name
Erforderlich. Die Abfrage, die für jeden vollständigen Durchlauf ausgeführt wird. Jeder Spaltenname, den der Connector in beliebigen Kapazität (Inhalt, eindeutige ID, ACLs) muss in dieser Abfrage vorhanden sein. Die Connector führt beim Start vorläufige Prüfungen durch, um Fehler zu erkennen und Auslassungen. Verwenden Sie daher nicht den allgemeinen Ausdruck SELECT * FROM ... Abfrage. |
Paginierung für vollständigen Durchlauf | db.allRecordsSql.pagination = {none | offset}
Mögliche Werte sind:
|
Abfrage für inkrementellen Durchlauf | db.incrementalUpdateSql = SELECT column-1[, column-2,...] FROM database-name WHERE last_update_time > ?
Erforderlich, wenn Sie inkrementelle Durchläufe planen. Das Zeichen „?“ in der Abfrage ist ein obligatorischer Platzhalter für einen Zeitstempelwert. Die Der Connector verwendet den Zeitstempel, um Änderungen zwischen SQL-Abfragen für inkrementelle Durchläufe zu verfolgen. Fügen Sie zum Verfolgen der Datenbank-Zeitstempelspalte für die letzte Aktualisierung den Parameter
Beim ersten Durchlauf mit Teilindexierung verwendet der Connector die Startzeit des Connectors. Nach dem beim ersten Durchlauf mit Teilindexierung, speichert Cloud Search den Zeitstempel, Bei Connector-Neustarts kann auf den vorherigen Durchlauf mit Teilindexierung zugegriffen werden Zeitstempel. |
Zeitzone der Datenbank | db.timestamp.timezone = America/Los_Angeles
Gibt die Zeitzone an, die für Datenbankzeitstempel verwendet werden soll. Der Datenbankzeitstempel, der verwendet wird, um neue Datensätze oder neue Datensätze zu identifizieren geänderten Datenbankeinträgen. Standardmäßig wird die lokale Zeitzone verwendet, in der der Connector ausgeführt wird. |
Beispiele für Durchlauf-SQL-Abfragen
- Grundlegende Abfrage mit vollständigem Durchlauf, die jeden relevanten Datensatz in einer Mitarbeiterdatenbank zur Indexierung liest:
db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee
- Legen Sie die Paginierung mit Offset fest und teilen Sie einen Durchlauf mit vollständiger Indexierung in mehrere Abfragen auf.
Für SQL Server 2012 oder Oracle 12c (Standard-SQL 2008-Syntax):
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
oder für MySQL oder Google Cloud SQL:
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
- Abfrage für vollständigen Durchlauf, bei der einzelne ACLs mit Aliasnamen angewendet werden:
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
- Einfache Abfrage für inkrementellen Durchlauf:
db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time \ FROM employee \ WHERE last_update_time > ?
- Abfrage für inkrementellen Durchlauf, bei der einzelne ACLs mit Aliassen angewendet werden:
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 > ?
- Abfrage für inkrementellen Durchlauf, bei der der Datenbankzeitstempel und nicht die aktuelle Zeit verwendet wird:
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 > ?
Parameter zur Spaltendefinition
Die folgenden Parameter geben die Spalten an, die Sie in den Durchlaufanweisungen verwenden und jeden Datensatz eindeutig identifiziert.
Einstellung | Parameter |
---|---|
Alle Spalten | db.allColumns = column-1, column-2, ...column-N
Erforderlich. Kennzeichnet alle Spalten die in einer SQL-Abfrage beim Zugriff auf die Datenbank erforderlich sind. Die Spalten die mit diesem Parameter definiert werden, muss in den Abfragen explizit referenziert werden. Jeden anderer Spaltendefinitionsparameter mit diesem Spaltensatz verglichen. Beispiel: db.allColumns = customer_id, first_name, last_name, phone, change_timestamp |
Eindeutige Schlüsselspalten | db.uniqueKeyColumns = column-1[, column-2]
Erforderlich. Listet entweder eine einzelne Datenbankspalte, die eindeutige Werte oder eine Kombination aus Spalten, deren Werte zusammen eine eindeutige ID definieren. Für Cloud Search muss jedes durchsuchbare Dokument eine eindeutige Kennung haben in einer Datenquelle. Sie müssen in der Lage sein, für jeden Datenbankeintrag eine eindeutige ID zu definieren aus Spaltenwerten. Wenn Sie mehrere Connectors auf separaten Datenbanken ausführen, in einem gemeinsamen Dataset zu erstellen, geben Sie unbedingt eine eindeutige ID in allen Dokumenten. Beispiele: db.uniqueKeyColumns = customer_id # or db.uniqueKeyColumns = last_name, first_name |
Spalte „URL-Link“ | url.columns = column-1[, column-2]
Erforderlich. Gibt mindestens einen gültigen, definierten an Namen der Spalten, die für die URL für ein anklickbares Suchergebnis verwendet werden. Für Datenbanken, denen keine relevante URL zugeordnet ist, wird ein kann für jeden Datensatz verwendet werden. Wenn die Spaltenwerte jedoch einen gültigen Link für jeden Datensatz definieren, wird in der Ansicht URL-Spalten und Werte für die Formatkonfiguration müssen angegeben werden. |
URL-Format | url.format = https://www.example.com/{0}
Definiert das Format der Ansichts-URL. Nummerierte Parameter beziehen sich auf die Spalten, in db.columns angegeben werden, beginnend mit null. Wenn keine Angabe erfolgt, wird der Standardwert „{0}“ verwendet. Beispiele folgen dieser Tabelle. |
In Prozent codierte Spalten für URL | url.columnsToEscape = column-1[, column-2]
Gibt Spalten aus db.columns an, deren Werte in Prozent codiert werden bevor sie in den formatierten URL-String eingefügt werden. |
Beispiele für URL-Spalten
So legen Sie die in Durchlaufabfragen verwendeten Spalten und das Format der Ansichts-URL fest:
- So verwenden Sie eine statische URL ohne Datenbankeintragswerte:
url.format = https://www.example.com
- So verwenden Sie einen einzelnen Spaltenwert, der die Ansichts-URL ist:
url.format = {0} url.columns = customer_id
- So verwenden Sie einen einzelnen Spaltenwert, der in der Ansichts-URL an Position {0} ersetzt wird:
url.format = https://www.example.com/customer/id={0} url.columns = customer_id url.columnsToEscape = customer_id
- So verwenden Sie mehrere Spaltenwerte zum Erstellen der Ansichts-URL (Spalten sind reihenfolgeabhängig):
url.format = {1}/customer={0} url.columns = customer_id, linked_url url.columnsToEscape = customer_id
Inhaltsfelder
Mit Inhaltsoptionen definieren Sie, welche Eintragswerte Teil des durchsuchbaren Inhalts sein sollten.
Einstellung | Parameter |
---|---|
Spalte mit der höchsten Qualität | contentTemplate.db.title = column-name
Erforderlich. Die Spalte mit der höchsten Qualität für die Suchindexierung und Ergebnispriorisierung. |
Spaltenpriorisierung für die Suche | contentTemplate.db.quality.high = column-1[, column-2...] contentTemplate.db.quality.medium = column-1[, column-2...] contentTemplate.db.quality.low = column-1[, column-2...]
Inhaltsspalten festlegen (außer der für |
Spalten für Inhaltsdaten | db.contentColumns = column-1[, column-2...]
Geben Sie Inhaltsspalten in der Datenbank an. Diese sind formatiert und die als durchsuchbaren Dokumentinhalt in Cloud Search hochgeladen wurden. Wenn Sie keinen Wert angeben, wird der Standardwert * verwendet. Dies bedeutet, dass alle Spalten für den Inhalt verwendet werden. |
Blob-Spalte | db.blobColumn = column-name
Geben Sie den Namen eines einzelnen Blobs an , die für den Dokumentinhalt anstelle einer Kombination von Inhaltsspalten verwendet werden soll. Wenn eine Blob-Spalte angegeben ist, gilt sie als Fehler, wenn Inhaltsspalten definiert sind. Definitionen für Metadaten und strukturierte Datenspalten zusammen mit Blob-Spalten weiterhin zulässig. |