CSV-Connector bereitstellen

Dieser Leitfaden richtet sich an Administratoren, die mit dem Google Cloud Search-Connector für kommagetrennte Werte (Comma-Separated Values, CSV) arbeiten und für das Herunterladen, Konfigurieren, Ausführen und Überwachen des Connectors verantwortlich sind.

In diesem Artikel finden Sie Anleitungen zu den folgenden Hauptaufgaben:

  • Laden Sie die Software für den Cloud Search-CSV-Connector herunter.
  • Konfigurieren Sie den Connector für eine bestimmte CSV-Datenquelle.
  • Stellen Sie den Connector bereit und führen Sie ihn aus.

Um die Konzepte in diesem Dokument zu verstehen, sollten Sie mit Google Workspace, CSV-Dateien und Zugriffssteuerungslisten (Access Control Lists, ACLs) vertraut sein.

Übersicht über den Cloud Search-CSV-Connector

Der Cloud Search-CSV-Connector funktioniert mit allen Textdateien mit kommagetrennten Werten (CSV). In einer CSV-Datei werden tabellarische Daten gespeichert. Jede Zeile der Datei ist dabei ein Datensatz.

Der Connector extrahiert Zeilen aus einer CSV-Datei und indexiert sie mithilfe der Indexing API in Cloud Search. Nach der Indexierung können Zeilen über Cloud Search-Clients oder die Query API durchsucht werden. Der Connector unterstützt auch ACLs, um den Nutzerzugriff auf Inhalte zu steuern.

Sie können den Connector unter Linux oder Windows installieren. Vor dem Deployment benötigen Sie die folgenden Komponenten:

Normalerweise erhalten Sie diese Anmeldedaten vom Google Workspace-Administrator der Domain.

Deployment

So stellen Sie den Cloud Search-CSV-Connector bereit:

  1. Connector-Software installieren
  2. Connector-Konfiguration angeben
  3. Zugriff auf die Cloud Search-Datenquelle konfigurieren
  4. Den CSV-Dateizugriff konfigurieren
  5. Spaltennamen, eindeutige Schlüssel und Datum/Uhrzeit-Spalten festlegen
  6. Spalten für anklickbare URLs im Suchergebnis angeben
  7. Metadaten und Spaltenformate angeben
  8. Datendurchlauf planen
  9. ACL-Optionen angeben

1. SDK Installieren

Installieren Sie das SDK in Ihrem lokalen Maven-Repository.

  1. Klonen Sie das SDK-Repository von GitHub.

    $ git clone https://github.com/google-cloudsearch/connector-sdk.git
    $ cd connector-sdk/csv

  2. Sehen Sie sich die ausgewählte Version an:

    $ git checkout tags/v1-0.0.3

  3. Erstellen Sie den Connector:

    $ mvn package

  4. Extrahieren und installieren Sie den Connector:

    $ cp target/google-cloudsearch-csv-connector-v1-0.0.3.zip installation-dir
    $ cd installation-dir
    $ unzip google-cloudsearch-csv-connector-v1-0.0.3.zip
    $ cd google-cloudsearch-csv-connector-v1-0.0.3

2. Konfiguration des CSV-Connectors angeben

Sie steuern das Verhalten des Connectors über Parameter in seiner Konfigurationsdatei. Zu den konfigurierbaren Parametern gehören:

  • Zugriff auf Datenquellen:
  • Speicherort und Definitionen der CSV-Datei.
  • Spalten mit eindeutigen IDs.
  • Optionen für den Durchlauf und die Zugriffssteuerungsliste (Access Control List, ACL)

So erstellen Sie eine Konfigurationsdatei:

  1. Öffnen Sie einen Texteditor und geben Sie der Datei den Namen connector-config.properties.
  2. Fügen Sie Konfigurationsparameter als key=value-Paare hinzu, wobei jedes Paar in einer neuen Zeile steht. Ein Beispiel für eine Konfigurationsdatei finden Sie unter Beispiel für eine Konfigurationsdatei.

Bewahren Sie die Konfigurationsdatei im selben Verzeichnis wie den Connector auf, um das Tracking zu vereinfachen. Damit der Connector die Datei erkennt, müssen Sie ihren Pfad in der Kommandozeile angeben. Andernfalls wird standardmäßig connector-config.properties in Ihrem lokalen Verzeichnis verwendet. Weitere Informationen finden Sie unter Connector ausführen.

3. Zugriff auf die Cloud Search-Datenquelle konfigurieren

In der Konfigurationsdatei müssen Parameter für den Zugriff auf die Cloud Search-Datenquelle angegeben werden. Sie benötigen die Datenquellen-ID, die Dienstkonto-ID und den Pfad zur privaten Schlüsseldatei des Dienstkontos.

Einstellung Parameter
ID der Datenquelle api.sourceId=1234567890abcdef

Erforderlich. Die ID der Cloud Search-Quelle, die vom Google Workspace-Administrator eingerichtet wurde.

Pfad zum privaten Schlüssel des Dienstkontos api.serviceAccountPrivateKeyFile=./PrivateKey.json

Erforderlich. Die Schlüsseldatei des Dienstkontos für den Zugriff des Connectors.

ID der Identitätsquelle api.identitySourceId=x0987654321

Erforderlich, wenn externe Nutzer und Gruppen verwendet werden. Die ID der Identitätsquelle, die vom Google Workspace-Administrator eingerichtet wurde.

4. Parameter der CSV-Datei konfigurieren

Ermitteln Sie den Pfad, das Format und die Codierung der Datei.

Einstellung Parameter
Pfad zur CSV-Datei csv.filePath=./movie_content.csv

Erforderlich. Der Pfad zur Datei für die Indexierung.

Dateiformat csv.format=DEFAULT

Das Format der Datei. Mögliche Werte stammen aus der Apache-Commons-CSV-Klasse CSVFormat.

Zu den Formatwerten gehören: DEFAULT, EXCEL, INFORMIX_UNLOAD, INFORMIX_UNLOAD_CSV, MYSQL, RFC4180, ORACLE, POSTGRESQL_CSV, POSTGRESQL_TEXT und TDF. Wenn kein Wert angegeben ist, wird DEFAULT verwendet.

Dateiformatmodifikator csv.format.withMethod=value

Eine Änderung der Dateiverarbeitung in Cloud Search. Mögliche Methoden stammen aus der Apache-Commons-CSV-Klasse CSVFormat und beinhalten diejenigen, für die ein einzelnes Zeichen, ein String oder ein boolescher Wert genutzt wird.

Wenn Sie beispielsweise ein Semikolon als Trennzeichen angeben möchten, verwenden Sie csv.format.withDelimiter=;. Mit csv.format.withIgnoreEmptyLines=true können Sie leere Zeilen ignorieren.

Dateicodierungstyp csv.fileEncoding=UTF-8

Der zu verwendende Java-Zeichensatz. Standardmäßig wird der Zeichensatz der Plattform verwendet.

5. Zu indexierende Spaltennamen und Spalten mit eindeutigem Schlüssel festlegen

Geben Sie Spalteninformationen in der Konfigurationsdatei an.

Einstellung Parameter
Spalten für Indexierung csv.csvColumns=movieId,movieTitle,description,actors,releaseDate,year,userratings...

Die zu indexierenden Spaltennamen aus der CSV-Datei. Standardmäßig wird die erste Zeile der CSV-Datei als Kopfzeile verwendet. Wenn csv.csvColumns angegeben ist, hat es Vorrang. Wenn csv.csvColumns festgelegt ist und die erste Zeile Überschriften enthält, sollten Sie auch csv.skipHeaderRecord=true festlegen, damit die erste Zeile nicht als Daten indexiert wird.

Eindeutige Schlüsselspalten csv.uniqueKeyColumns=movieId

Spalten, die zum Generieren einer eindeutigen ID verwendet werden. Die Standardeinstellung ist der Hashcode des Eintrags.

6. Spalten für anklickbare URLs im Suchergebnis angeben

Aktivieren Sie anklickbare URLs für Suchergebnisse.

Einstellung Parameter
URL-Format für Suchergebnisse url.format=https://mymoviesite.com/movies/{0}

Erforderlich. Das Format, in dem die Ansichts-URL dargestellt wird.

URL-Parameter url.columns=movieId

Erforderlich. Die CSV-Spaltennamen, deren Werte zum Generieren der Eintrags-URL verwendet werden.

Zu codierende URL-Parameter für Suchergebnisse url.columnsToEscape=movieId

Optional. Die CSV-Spaltennamen, deren Werte in der URL codiert werden, damit eine gültige URL angezeigt wird.

7. Metadaten, Spaltenformate und Suchqualität angeben

Sie können der Konfigurationsdatei Parameter hinzufügen, mit denen Folgendes angegeben wird:

Konfigurationsparameter für Metadaten

Mit diesen Parametern werden Spalten zum Befüllen von Elementmetadaten beschrieben.

Einstellung Parameter
Titel itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind

Das Metadatenattribut für den Dokumenttitel. Der Standardwert ist ein leerer String.

URL itemMetadata.sourceRepositoryUrl.field=url
itemMetadata.sourceRepositoryUrl.defaultValue=https://www.imdb.com/title/tt0031381/
Das Metadatenattribut für die Dokument-URL in den Suchergebnissen.
Zeitstempel bei Erstellung itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17

Das Metadatenattribut für den Zeitstempel bei Dokumenterstellung.

Zeitpunkt der letzten Aktualisierung itemMetadata.updateTime.field=releaseDate
itemMetadata.updateTime.defaultValue=1940-01-17

Das Metadatenattribut für den Zeitstempel der letzten Änderung am Dokument.

Dokumentsprache itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US

Die Inhaltssprache der indexierten Dokumente.

Typ des Schemaobjekts itemMetadata.objectType.field=type
itemMetadata.objectType.defaultValue=movie

Der Objekttyp, der vom Connector verwendet wird, wie im Schema beschrieben. Der Connector indexiert keine strukturierten Daten, wenn dieses Attribut nicht angegeben ist.

Datum/Uhrzeit-Formate

Mit diesem Parameter werden zusätzliche Datums- und Uhrzeitformate für das Parsen von Stringwerten in Datums- oder Datum/Uhrzeit-Felder angegeben.

Einstellung Parameter
Zusätzliche Datum/Uhrzeit-Formate structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
Eine durch Semikolons getrennte Liste zusätzlicher java.time.format.DateTimeFormatter-Muster. Diese werden verwendet, wenn für Datums- oder Datum-Uhrzeit-Felder in den Metadaten oder im Schema Stringwerte geparst werden. Der Standardwert ist eine leere Liste. Die Formate RFC 3339 und RFC 1123 werden jedoch immer unterstützt.

Spaltenformate

Mit diesen Parametern wird angegeben, wie Spalten in der CSV-Datei geparst werden sollen.

Einstellung Parameter
Kopfzeile überspringen csv.skipHeaderRecord=true

Ignoriere die erste Zeile. Der Standardwert ist "false".

Spalten mit mehreren Werten csv.multiValueColumns=genre,actors

Spaltennamen mit mehreren Werten.

Trennzeichen für Spalten mit mehreren Werten csv.multiValue.genre=;

Trennzeichen für Spalten mit mehreren Werten. Das Standardtrennzeichen ist ein Komma.

Suchqualität

Der Connector verwendet eine Inhaltsvorlage zum Formatieren von Datensätzen. Das Titelfeld hat die höchste Priorität. Sie können anderen Feldern Prioritätsstufen zuweisen (hoch, mittel, niedrig).

Einstellung Parameter
Titel des Inhalts contentTemplate.csv.title=movieTitle

Der Titel des Inhalts ist das Feld mit der höchsten Suchqualität.

Hohe Suchqualität für Inhaltsfelder contentTemplate.csv.quality.high=actors

Inhaltsfelder mit einem hohen Wert für die Suchqualität. Der Standardwert ist ein leerer String.

Geringe Suchqualität für Inhaltsfelder contentTemplate.csv.quality.low=genre

Inhaltsfelder mit einem niedrigen Wert für die Suchqualität. Der Standardwert ist ein leerer String.

Mittlere Suchqualität für Inhaltsfelder contentTemplate.csv.quality.medium=description

Inhaltsfelder mit einem mittleren Wert für die Suchqualität. Der Standardwert ist ein leerer String.

Nicht festgelegte Inhaltsfelder contentTemplate.csv.unmappedColumnsMode=IGNORE

Die Vorgehensweise des Connectors bei nicht festgelegten Inhaltsfeldern. Gültige Werte sind:

  • APPEND: Fügt der Vorlage nicht spezifizierte Inhaltsfelder hinzu
  • IGNORE: Nicht spezifizierte Inhaltsfelder werden ignoriert

Der Standardwert ist APPEND.

8. Datendurchlauf planen

Der Durchlauf ist der Prozess, bei dem Inhalte ermittelt werden. Der Connector durchläuft CSV-Zeilen und indexiert sie mithilfe der Indexing API. Von einem CSV-Connector werden nur Durchläufe mit vollständiger Indexierung ausgeführt.

Einstellung Parameter
Durchlaufintervall schedule.traversalIntervalSecs=7200

Intervall zwischen vollständigen Durchläufen in Sekunden. Der Standardwert ist 86.400 (ein Tag).

Durchlauf beim Start schedule.performTraversalOnStart=false

Beim Start des Connectors wird ein Durchlauf durchgeführt, anstatt auf das Ablaufen des ersten Intervalls zu warten. Standardwert ist true.

9. ACL-Optionen angeben

Der Connector verwendet ACLs, um den Zugriff zu steuern. Wenn Ihr Repository ACLs bereitstellt, laden Sie sie hoch. Konfigurieren Sie andernfalls Standard-ACLs. Setzen Sie defaultAcl.mode auf einen anderen Wert als none.

Einstellung Parameter
ACL-Modus defaultAcl.mode=fallback

Erforderlich. Der Connector unterstützt nur den Fallback-Modus.

Standard-ACL-Name defaultAcl.name=VIRTUAL_CONTAINER_FOR_CONNECTOR_1

Optional. Überschreibt den Namen des virtuellen Containers, der vom Connector für Standard-ACLs verwendet wird. Der Standardwert ist DEFAULT_ACL_VIRTUAL_CONTAINER. Sie können diesen Wert überschreiben, wenn Inhalte von mehreren Connectors in derselben Datenquelle indexiert werden.

Standardmäßige öffentliche ACL defaultAcl.public=true

Legt für das gesamte Repository den Zugriff auf die Public Domain fest. Der Standardwert ist „false“.

Allgemeine ACL für Gruppen mit Leseberechtigung defaultAcl.readers.groups=google:group1, group2
Allgemeine ACL für Nutzer mit Leseberechtigung defaultAcl.readers.users=user1, user2, google:user3
Allgemeine ACL für Gruppen ohne Leseberechtigung defaultAcl.denied.groups=group3
Allgemeine ACL für Nutzer ohne Leseberechtigung defaultAcl.denied.users=user4, user5
Zugriff auf gesamte Domain Wenn Sie festlegen möchten, dass jeder indexierte Datensatz für jeden Nutzer in der Domain öffentlich zugänglich sein soll, legen Sie für beide der folgenden Optionen die folgenden Werte fest:
  • defaultAcl.mode=fallback
  • defaultAcl.public=true
Allgemein festgelegte ACL Wenn Sie eine gemeinsame ACL für jeden Datensatz definieren möchten, legen Sie die folgenden Parameter fest:
  • defaultAcl.mode=fallback
  • defaultAcl.public=false
  • defaultAcl.readers.groups=google:group1, group2
  • defaultAcl.readers.users=user1, user2, google:user3
  • defaultAcl.denied.groups=group3
  • defaultAcl.denied.users=user4, user5

Es wird davon ausgegangen, dass Nutzer und Gruppen lokal definiert sind, sofern nicht das Präfix „google:“ verwendet wird.

Der Standardnutzer oder die Standardgruppe ist ein leerer String. Geben Sie nur Nutzer- und Gruppenoptionen an, wenn defaultAcl.public false ist. Verwenden Sie eine durch Kommas getrennte Liste für mehrere Gruppen und Nutzer.

Wenn defaultAcl.mode none ist, kann nur in Datensätzen gesucht werden, wenn individuelle ACLs definiert sind.

Schemadefinition

Damit Abfragen von strukturierten Daten unterstützt werden, müssen Sie ein Schema für Ihre Datenquelle einrichten.

Nehmen wir als Beispiel eine CSV-Datei mit den folgenden Informationen zu Filmen:

  1. movieId
  2. movieTitle
  3. Beschreibung
  4. Jahr
  5. releaseDate
  6. actors (mehrere durch Komma (,) getrennte Werte)
  7. genre (mehrere Werte)
  8. Bewertungen

Auf Grundlage dieser Struktur können Sie das folgende Schema für Ihre Datenquelle definieren:

{
  "objectDefinitions": [
    {
      "name": "movie",
      "propertyDefinitions": [
        {
          "name": "actors",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "textPropertyOptions": {
            "operatorOptions": {
              "operatorName": "actor"
            }
          }
        },
        {
          "name": "releaseDate",
          "isReturnable": true,
          "isRepeatable": false,
          "isFacetable": false,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "released",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          }
        },
        {
          "name": "movieTitle",
          "isReturnable": true,
          "isRepeatable": false,
          "isFacetable": false,
          "textPropertyOptions": {
            "retrievalImportance": {
              "importance": "HIGHEST"
            },
            "operatorOptions": {
              "operatorName": "title"
            }
          }
        },
        {
          "name": "genre",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "enumPropertyOptions": {
            "operatorOptions": {
              "operatorName": "genre"
            },
            "possibleValues": [
              {
                "stringValue": "Action"
              },
              {
                "stringValue": "Documentary"
              },
              {
                "stringValue": "Drama"
              },
              {
                "stringValue": "Crime"
              },
              {
                "stringValue": "Sci-fi"
              }
            ]
          }
        },
        {
          "name": "userRating",
          "isReturnable": true,
          "isRepeatable": false,
          "isFacetable": true,
          "integerPropertyOptions": {
            "orderedRanking": "ASCENDING",
            "maximumValue": "10",
            "operatorOptions": {
              "operatorName": "score",
              "lessThanOperatorName": "scorebelow",
              "greaterThanOperatorName": "scoreabove"
            }
          }
        }
      ]
    }
  ]
}

Beispiel: Konfigurationsdatei

Hier sehen Sie die Parameter (key=value-Paare), durch die das Verhalten eines Beispielconnectors definiert wird.

# data source access
api.sourceId=1234567890abcd
api.serviceAccountPrivateKeyFile=./PrivateKey.json

# CSV data structure
csv.filePath=./movie_content.csv
csv.csvColumns=movieId,movieTitle,description,releaseYear,genre,actors,ratings,releaseDate
csv.skipHeaderRecord=true
url.format=https://mymoviesite.com/movies/{0}
url.columns=movieId
csv.datetimeFormat.releaseDate=yyyy-mm-dd
csv.multiValueColumns=genre,actors
csv.multiValue.genre=;
contentTemplate.csv.title=movieTitle

# metadata structured data and content
itemMetadata.title.field=movieTitle
itemMetadata.createTime.field=releaseDate
itemMetadata.contentLanguage.defaultValue=en-US
itemMetadata.objectType.defaultValue=movie
contentTemplate.csv.quality.medium=description
contentTemplate.csv.unmappedColumnsMode=IGNORE

#ACLs
defaultAcl.mode=fallback
defaultAcl.public=true

Connector ausführen

So führen Sie den Connector über die Befehlszeile aus:

$ java -jar google-cloudsearch-csv-connector-v1-0.0.3.jar -Dconfig=my.config

Standardmäßig sind Connectorprotokolle in der normalen Ausgabe verfügbar. Sie können Protokolle erstellen und in Dateien speichern lassen, indem Sie logging.properties angeben.