Это руководство предназначено для администраторов коннектора Google Cloud Search CSV (значения, разделенные запятыми), то есть для всех, кто отвечает за загрузку, настройку, запуск и мониторинг коннектора.
В этом руководстве содержатся инструкции по выполнению основных задач, связанных с развертыванием CSV-коннектора:
- Загрузите программное обеспечение для коннектора Google Cloud Search CSV
- Настройте соединитель для использования с определенным источником данных CSV.
- Развертывание и запуск соединителя
Чтобы понять концепции, изложенные в этом документе, вы должны быть знакомы с основами Google Workspace, CSV-файлами и списками контроля доступа (ACL).
Обзор CSV-коннектора Google Cloud Search
Коннектор Cloud Search CSV работает с любым текстовым файлом с разделителями-запятыми (CSV). CSV-файл хранит табличные данные, и каждая строка файла представляет собой запись данных.
CSV-коннектор Google Cloud Search извлекает отдельные строки из CSV-файла и индексирует их в Cloud Search через API индексирования Cloud Search. После успешной индексации отдельные строки CSV-файлов доступны для поиска через клиенты Cloud Search или API запросов Cloud Search. CSV-коннектор также поддерживает управление доступом пользователей к контенту в результатах поиска с помощью списков контроля доступа (ACL).
CSV-коннектор Google Cloud Search можно установить на Linux или Windows. Перед развертыванием CSV-коннектора Google Cloud Search убедитесь, что у вас есть следующие необходимые компоненты:
- Java JRE 1.8, установленная на компьютере, на котором работает CSV-коннектор Google Cloud Search
Информация Google Workspace, необходимая для установления связей между Google Cloud Search и источником данных:
- Закрытый ключ Google Workspace (который содержит идентификатор учетной записи службы)
- Идентификатор источника данных Google Workspace
Обычно эти учетные данные может предоставить администратор домена Google Workspace.
Этапы развертывания
Чтобы развернуть CSV-коннектор Google Cloud Search, выполните следующие действия:
- Установите программное обеспечение коннектора Google Cloud Search CSV
- Укажите конфигурацию CSV-коннектора
- Настройте доступ к источнику данных Google Cloud Search
- Настроить доступ к CSV-файлу
- Укажите имена столбцов для индексации, уникальные ключевые столбцы и столбцы даты и времени.
- Укажите столбцы, которые будут использоваться в URL-адресах кликабельных результатов поиска
- Укажите метаданные, форматы столбцов
- Расписание обхода данных
- Укажите параметры списка контроля доступа (ACL)
1. Установите SDK
Установите SDK в локальный репозиторий Maven.
Клонируйте репозиторий SDK с GitHub.
$ git clone https://github.com/google-cloudsearch/connector-sdk.git $ cd connector-sdk/csv
Проверьте желаемую версию SDK:
$ git checkout tags/v1-0.0.3
Сборка соединителя:
$ mvn package
Скопируйте zip-файл соединителя в локальный каталог установки:
$ 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. Укажите конфигурацию CSV-коннектора.
Как администратор коннектора, вы управляете поведением и атрибутами CSV-коннектора, определяя параметры в его конфигурационном файле. Доступные для настройки параметры включают:
- Доступ к источнику данных
- Расположение CSV-файла
- Определения столбцов CSV
- Столбец(ы), определяющие уникальный идентификатор
- Варианты обхода
- Параметры ACL для ограничения доступа к данным
Чтобы коннектор мог правильно получить доступ к CSV-файлу и индексировать соответствующее содержимое, необходимо сначала создать его файл конфигурации.
Чтобы создать файл конфигурации:
- Откройте текстовый редактор по вашему выбору и дайте имя файлу конфигурации.
Добавьте пары ключ =значение к содержимому файла, как описано в следующих разделах. - Сохраните и дайте имя файлу конфигурации.
Google рекомендует называть файл конфигурацииconnector-config.properties
, чтобы для запуска connector не требовались дополнительные параметры командной строки.
Поскольку путь к файлу конфигурации можно указать в командной строке, стандартное расположение файла не требуется. Однако для упрощения отслеживания и запуска коннектора рекомендуется хранить файл конфигурации в том же каталоге, что и коннектор.
Чтобы коннектор распознал ваш файл конфигурации, укажите путь к нему в командной строке. В противном случае коннектор будет использовать имя файла по умолчанию — connector-config.properties
в вашем локальном каталоге. Сведения об указании пути к файлу конфигурации в командной строке см. в статье Запуск коннектора Cloud Search CSV .
3. Настройте доступ к источнику данных Google Cloud Search.
Первые параметры, которые должен указывать каждый файл конфигурации, необходимы для доступа к источнику данных Cloud Search, как показано в следующей таблице. Как правило, для настройки доступа коннектора к Cloud Search требуются идентификатор источника данных, идентификатор учётной записи службы и путь к файлу закрытого ключа учётной записи службы. Действия, необходимые для настройки источника данных, описаны в разделе Управление сторонними источниками данных.
Параметр | Параметр |
Идентификатор источника данных | api.sourceId= 1234567890abcdef Обязательно. Идентификатор источника Google Cloud Search, настроенный администратором Google Workspace, как описано в разделе Управление сторонними источниками данных. |
Путь к файлу закрытого ключа учетной записи службы | api.serviceAccountPrivateKeyFile= ./PrivateKey.json Обязательно. Файл ключа учётной записи службы Google Cloud Search для доступа к CSV-коннектору Google Cloud Search. |
Идентификатор источника идентичности | api.identitySourceId= x0987654321 Требуется при использовании внешних пользователей и групп. Идентификатор источника удостоверений Google Cloud Search, настроенный администратором Google Workspace. |
4. Настройте параметры CSV-файла
Прежде чем коннектор сможет обработать CSV-файл и извлечь из него данные для индексации, необходимо указать путь к файлу. Вы также можете указать формат файла и тип кодировки. Добавьте следующие параметры, чтобы задать свойства CSV-файла в файл конфигурации.
Параметр | Параметр |
Путь к CSV-файлу | csv.filePath= ./movie_content.csv Обязательно. Путь к CSV-файлу для доступа и извлечения содержимого для индексации. |
Формат файла | csv.format= DEFAULT Формат файла. Возможные значения берутся из класса Apache Commons CSV CSVFormat . Доступны следующие форматы: |
Модификатор формата файла | csv.format. withMethod = value Изменение в обработке файла в Cloud Search. Возможные методы взяты из класса Apache Commons CSV CSVFormat и включают те, которые принимают один символ, строку или логическое значение. Например, чтобы указать точку с запятой в качестве разделителя, используйте |
Тип кодировки файла | csv.fileEncoding= UTF-8 Набор символов Java, используемый Cloud Search при чтении файла. Если не указан, Cloud Search использует набор символов, заданный по умолчанию для платформы. |
5. Укажите имена столбцов для индексации и уникальные ключевые столбцы.
Чтобы коннектор мог получать доступ к CSV-файлам и индексировать их, необходимо указать определения столбцов в файле конфигурации. Если файл конфигурации не содержит параметров, задающих имена индексируемых столбцов и столбцов с уникальными ключами, используются значения по умолчанию.
Параметр | Параметр |
Столбцы для индексации | csv.csvColumns= movieId,movieTitle,description,actors,releaseDate,year,userratings... Имена столбцов CSV-файла для индексации. Если |
Уникальные ключевые столбцы | csv.uniqueKeyColumns= movieId Столбцы CSV-файла, значения которых будут использоваться для генерации уникального идентификатора каждой записи. Если не указано, в качестве уникального ключа следует использовать хэш записи CSV. Значение по умолчанию — хэш-код записи. |
6. Укажите столбцы, которые будут использоваться в URL-адресах кликабельных результатов поиска.
Когда пользователь выполняет поиск с помощью Google Cloud Search, отображается страница с результатами поиска, включающая кликабельные URL-адреса для каждого результата. Чтобы включить эту функцию, необходимо добавить параметр, указанный в следующей таблице, в файл конфигурации.
Параметр | Параметр |
Формат URL результата поиска | url.format= https://mymoviesite.com/movies/{0} Обязательно. Формат для создания URL-адреса просмотра содержимого CSV. |
Параметры URL результатов поиска. | url.columns= movieId Обязательно. Имена столбцов CSV-файла, значения которых будут использоваться для формирования URL-адреса просмотра записи. |
Параметры URL результатов поиска для экранирования | url.columnsToEscape= movieId Необязательно. Имена столбцов CSV-файла, значения которых будут экранированы URL-адресами для формирования корректного URL-адреса представления. |
7. Укажите метаданные, форматы столбцов, качество поиска.
Вы можете добавить в файл конфигурации параметры, которые определяют:
Параметры конфигурации метаданных
Параметры конфигурации метаданных описывают столбцы CSV-файла, используемые для заполнения метаданных элемента. Если файл конфигурации не содержит этих параметров, используются значения по умолчанию. Эти параметры представлены в следующей таблице.
Параметр | Параметр |
Заголовок | itemMetadata.title.field= movieTitle itemMetadata.title.defaultValue= Gone with the Wind Атрибут метаданных, содержащий значение, соответствующее названию документа. Значение по умолчанию — пустая строка. |
URL | itemMetadata.sourceRepositoryUrl.field= url itemMetadata.sourceRepositoryUrl.defaultValue= https://www.imdb.com/title/tt0031381/ Атрибут метаданных, содержащий значение URL-адреса документа для результатов поиска. |
Созданная временная метка | itemMetadata.createTime.field= releaseDate itemMetadata.createTime.defaultValue= 1940-01-17 Атрибут метаданных, содержащий значение метки времени создания документа. |
Время последнего изменения | itemMetadata.updateTime.field= releaseDate itemMetadata.updateTime.defaultValue= 1940-01-17 Атрибут метаданных, содержащий значение метки времени последнего изменения документа. |
Язык документа | itemMetadata.contentLanguage.field= languageCode itemMetadata.contentLanguage.defaultValue= en-US Язык содержимого индексируемых документов. |
Тип объекта схемы | itemMetadata.objectType.field= type itemMetadata.objectType.defaultValue= movie Тип объекта, используемый коннектором, как определено в схеме . Коннектор не будет индексировать структурированные данные, если это свойство не указано. |
Форматы даты и времени
Форматы даты и времени определяют ожидаемые форматы атрибутов метаданных. Если файл конфигурации не содержит этот параметр, используются значения по умолчанию. Этот параметр представлен в следующей таблице.
Параметр | Параметр |
Дополнительные форматы даты и времени | structuredData.dateTimePatterns= MM/dd/uuuu HH:mm:ssXXX Список дополнительных шаблонов java.time.format.DateTimeFormatter, разделённых точкой с запятой . Эти шаблоны используются при анализе строковых значений любых полей даты или даты-времени в метаданных или схеме. Значение по умолчанию — пустой список, но форматы RFC 3339 и RFC 1123 всегда поддерживаются. |
Форматы столбцов
Форматы столбцов определяют информацию о столбцах, которые должны быть частью поискового контента. Если файл конфигурации не содержит этих параметров, используются значения по умолчанию. Эти параметры представлены в следующей таблице.
Параметр | Параметр |
Пропустить заголовок | csv.skipHeaderRecord=true Логическое значение. Игнорируйте запись заголовка (первую строку) в CSV-файле. Если вы установили |
Многозначные столбцы | csv.multiValueColumns= genre,actors Имена столбцов в CSV-файле, которые имеют несколько значений. Значение по умолчанию — пустая строка. |
Разделитель для многозначных столбцов | csv.multiValue.genre= ; Разделитель для столбцов с несколькими значениями. По умолчанию разделителем является запятая. |
Качество поиска
Коннектор Cloud Search CSV позволяет автоматически форматировать поля данных в формате HTML. Коннектор определяет поля данных в начале выполнения коннектора, а затем использует шаблон контента для форматирования каждой записи данных перед её загрузкой в Cloud Search.
Шаблон контента определяет важность каждого значения поля для поиска. Поле «Заголовок» является обязательным и имеет наивысший приоритет. Вы можете назначить уровни важности качества поиска для всех остальных полей контента: высокий, средний или низкий. Любое поле контента, не относящееся к конкретной категории, по умолчанию имеет низкий приоритет. Эти параметры представлены в следующей таблице.
Параметр | Параметр |
Название контента | contentTemplate.csv.title = movieTitle Заголовок контента является полем наивысшего качества поиска. |
Высокое качество поиска по полям контента | contentTemplate.csv.quality.high = actors Поля контента с высоким значением качества поиска. Значение по умолчанию — пустая строка. |
Низкое качество поиска по полям контента | contentTemplate.csv.quality.low = genre Поля контента с низким значением качества поиска. Значение по умолчанию — пустая строка. |
Среднее качество поиска для полей контента | contentTemplate.csv.quality.medium = description Полям контента присвоено среднее значение качества поиска. Значение по умолчанию — пустая строка. |
Неуказанные поля содержимого | contentTemplate.csv.unmappedColumnsMode = IGNORE Как коннектор обрабатывает неуказанные поля контента. Допустимые значения:
|
8. Планирование прохождения данных
Обход — это процесс, который коннектор использует для поиска контента в источнике данных, в данном случае в CSV-файле. В процессе работы CSV-коннектор обходит строки CSV-файла и индексирует каждую строку в Cloud Search через API индексирования.
Полный обход индексирует все столбцы в файле. Инкрементный обход индексирует только столбцы, добавленные или измененные с момента предыдущего обхода. CSV-коннектор выполняет только полный обход. Инкрементный обход не выполняется.
Параметры планирования определяют частоту ожидания коннектора между обходами. Если файл конфигурации не содержит параметров планирования, используются значения по умолчанию. Эти параметры представлены в следующей таблице.
Параметр | Параметр |
Полный обход после интервала | schedule.traversalIntervalSecs = 7200 Коннектор выполняет полный обход через заданный интервал. Укажите интервал между обходами в секундах. Значение по умолчанию — 86400 (количество секунд в сутках). |
Полный обход при запуске коннектора | schedule.performTraversalOnStart = false Коннектор выполняет полный обход при запуске, не дожидаясь истечения первого интервала. Значение по умолчанию — true. |
9. Укажите параметры списка контроля доступа (ACL)
Коннектор Google Cloud Search CSV поддерживает разрешения через списки контроля доступа (ACL) для управления доступом к содержимому CSV-файла в результатах поиска. Доступно несколько вариантов списков контроля доступа (ACL), позволяющих защитить доступ пользователей к индексированным записям.
Если в вашем репозитории с каждым документом связана отдельная информация ACL, загрузите всю информацию ACL для управления доступом к документам в Cloud Search. Если в вашем репозитории информация ACL предоставляется частично или отсутствует, вы можете указать информацию ACL по умолчанию в следующих параметрах, которые SDK предоставляет коннектору.
Коннектор использует списки контроля доступа по умолчанию, включённые в файле конфигурации. Чтобы включить списки контроля доступа по умолчанию, установите для параметра defaultAcl.mode
любой режим, отличный от none
и настройте его с помощью defaultAcl.*
Параметр | Параметр |
Режим ACL | defaultAcl.mode =fallback Обязательно. CSV-коннектор использует функциональность ACL по умолчанию. Коннектор поддерживает только резервный режим. |
Имя ACL по умолчанию | defaultAcl.name = VIRTUAL_CONTAINER_FOR_CONNECTOR_1 Необязательно. Позволяет переопределить имя виртуального контейнера, используемое коннектором для настройки списков контроля доступа (ACL) по умолчанию. Значение по умолчанию — «DEFAULT_ACL_VIRTUAL_CONTAINER». Вы можете переопределить это значение, если несколько коннекторов индексируют контент в одном источнике данных. |
Публичный список ACL по умолчанию | defaultAcl.public = true ACL-список по умолчанию, используемый для всего репозитория, настроен на доступ к публичному домену. Значение по умолчанию — false. |
Общие читатели групп ACL | defaultAcl.readers.groups = google: group1, group2 |
Распространенные читатели ACL | defaultAcl.readers.users = user1, user2, google: user3 |
Общий список ACL отклонил групповые читатели | defaultAcl.denied.groups = group3 |
Общий Acl запретил читателям | defaultAcl.denied.users = user4, user5 |
Доступ ко всему домену | Чтобы указать, что каждая индексированная запись будет общедоступна для каждого пользователя в домене, задайте оба следующих параметра со значениями:
|
Общеопределенный список ACL | Чтобы указать один ACL для каждой записи репозитория данных, задайте все следующие значения параметров:
|
Определение схемы
Cloud Search позволяет индексировать и обслуживать как структурированный, так и неструктурированный контент. Для поддержки структурированных запросов к вашим данным необходимо настроить схему для вашего источника данных .
После определения CSV-коннектор может ссылаться на заданную схему для построения запросов на индексацию. В качестве наглядного примера рассмотрим CSV-файл, содержащий информацию о фильмах.
Предположим, что входной CSV-файл имеет следующее содержимое.
- movieId
- Название фильма
- описание
- год
- Дата выпуска
- актеры (несколько значений, разделенных запятой (,))
- жанр (множественные значения)
- рейтинги
На основе вышеприведенной структуры данных вы можете определить схему для источника данных, в рамках которой вы хотите индексировать данные из CSV-файла.
{
"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"
}
}
}
]
}
]
}
Пример файла конфигурации
В следующем примере файла конфигурации показаны пары параметров key=value
, которые определяют поведение примера соединителя.
# 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
Подробное описание каждого параметра см. в справочнике «Параметры конфигурации».
Запустите CSV-коннектор Cloud Search
Чтобы запустить коннектор из командной строки, введите следующую команду:
$ java -jar google-cloudsearch-csv-connector-v1-0.0.3.jar -Dconfig=my.config
По умолчанию журналы коннектора доступны в стандартном выводе. Вы можете записывать журналы в файлы, указав logging.properties
.