С каждым соединителем связан файл конфигурации, содержащий параметры, используемые соединителем, например идентификатор вашего репозитория. Параметры определяются как пары ключ-значение , например api.sourceId=1234567890abcdef
.
SDK Google Cloud Search содержит несколько предоставленных Google параметров конфигурации, используемых различными соединителями. Из параметров конфигурации, предоставленных Google, в файле конфигурации необходимо определить только параметры доступа к источнику данных . Вам не нужно переопределять параметры, предоставленные Google, в вашем файле конфигурации , если вы не хотите переопределить их значения по умолчанию.
В этом справочнике описаны параметры конфигурации, предоставленные Google.
Пример файла конфигурации
В следующем примере показан файл конфигурации удостоверений с парами «ключ-значение» параметров.
# # Configuration file sample # api.sourceId=1234567890abcdef api.identitySourceId=0987654321lmnopq api.serviceAccountPrivateKeyFile= ./PrivateKey.json # # Traversal schedules # schedule.traversalIntervalSecs=7200 schedule.incrementalTraversalIntervalSecs=600 # # Default ACLs # defaultAcl.mode=fallback defaultAcl.public=true
Обычно устанавливаемые параметры
В этом разделе перечислены обязательные и необязательные часто устанавливаемые параметры конфигурации. Если вы не измените значения необязательных параметров, соединитель будет использовать значения по умолчанию, предоставленные SDK.
Доступ к источнику данных
В следующей таблице перечислены все параметры, которые должны присутствовать в файле конфигурации. Используемые параметры зависят от типа создаваемого соединителя (соединитель контента или соединитель удостоверений).
Параметр | Параметр |
---|---|
Идентификатор источника данных | api.sourceId = 1234567890abcdef Этот параметр необходим соединителю для определения местоположения вашего репозитория. Вы получаете это значение при добавлении источника данных для поиска . Этот параметр должен присутствовать в файлах конфигурации соединителя. |
Идентификатор источника идентификационной информации | api.identitySourceId = 0987654321lmnopq Этот параметр требуется соединителям удостоверений для определения местоположения внешнего источника удостоверений. Это значение вы получили при сопоставлении удостоверений пользователей в Cloud Search . Этот параметр должен присутствовать во всех файлах конфигурации соединителя удостоверений. |
Файл закрытого ключа сервисного аккаунта | api.serviceAccountPrivateKeyFile =./PrivateKey.json Этот параметр содержит закрытый ключ, необходимый для доступа к хранилищу. Это значение вы получили при настройке доступа к REST API Google Cloud Search . Этот параметр должен быть во всех файлах конфигурации. |
Идентификатор сервисного аккаунта | api.serviceAccountId = 123abcdef4567890 Этот параметр указывает идентификатор учетной записи службы. Значение пустой строки по умолчанию допустимо только в том случае, если в файле конфигурации указан параметр файла закрытого ключа. Этот параметр является обязательным, если ваш файл закрытого ключа не является ключом JSON. |
Идентификатор аккаунта Google Workspace | api.customerId = 123abcdef4567890 Этот параметр указывает идентификатор учетной записи Google Workspace предприятия. Это значение вы получили при сопоставлении удостоверений пользователей в Cloud Search . Этот параметр является обязательным при синхронизации пользователей с помощью соединителя удостоверений. |
Корневой URL-адрес | api.rootUrl = baseURLPath Этот параметр указывает путь к базовому URL-адресу службы индексирования. Значением по умолчанию для этого параметра является пустая строка, которая преобразуется в |
Графики обхода
Параметры планирования определяют, как часто соединитель ожидает между проходами.
Параметр | Параметр |
---|---|
Полный обход при запуске соединителя | schedule.performTraversalOnStart = true|false Соединитель выполняет полный обход при запуске соединителя, а не ждет истечения первого интервала. Значение по умолчанию — |
Полный обход после интервала | schedule.traversalIntervalSecs = intervalInSeconds Соединитель выполняет полный обход после заданного интервала. Укажите интервал между обходами в секундах. Значение по умолчанию — |
Выход после одного обхода | connector.runOnce = true|false Соединитель выполняет полный обход один раз, а затем завершает работу. Для этого параметра должно быть установлено значение |
Инкрементный обход после интервала | schedule.incrementalTraversalIntervalSecs = intervalInSeconds Соединитель выполняет инкрементальный обход после указанного интервала. Укажите интервал между обходами в секундах. Значение по умолчанию — |
Запланированные интервалы очереди опросов | schedule.pollQueueIntervalSecs = interval_in_seconds Интервал между запланированными интервалами очереди опроса (в секундах). Используется только соединителем обхода листинга. Значение по умолчанию — |
Списки контроля доступа
Соединитель управляет доступом к элементам с помощью списков ACL. Несколько параметров позволяют защитить доступ пользователей к индексированным записям с помощью списков ACL.
Если в вашем репозитории есть индивидуальная информация ACL, связанная с каждым элементом, загрузите всю информацию ACL, чтобы контролировать доступ к элементам в Cloud Search. Если ваш репозиторий предоставляет частичную информацию ACL или не предоставляет ее вообще, вы можете указать информацию ACL по умолчанию в следующих параметрах, которые SDK предоставляет соединителю.
Параметр | Параметр |
---|---|
Режим ACL | defaultAcl.mode = mode Определяет, когда применять ACL по умолчанию. Допустимые значения:
Режим по умолчанию — |
Публичный список управления доступом по умолчанию | defaultAcl.public = true|false По умолчанию ACL, используемый для всего репозитория, настроен на общедоступный доступ. Значение по умолчанию — |
Общие считыватели групп ACL | defaultAcl.readers.groups = google: group1@mydomain.com, group2 |
Общие читатели ACL | defaultAcl.readers.users = user1, user2, google: user3@mydomain.com |
Общий список ACL запретил чтение групп | defaultAcl.denied.groups = group3 |
Common Acl отказал читателям | defaultAcl.denied.users = user4, user5 |
Полный доступ к домену | Чтобы указать, что каждая индексированная запись будет общедоступна для каждого пользователя в домене, установите для обоих следующих параметров значения:
|
Общий определенный ACL | Чтобы указать один ACL для каждой записи хранилища данных, установите все следующие значения параметров:
|
Параметры конфигурации метаданных
Некоторые метаданные элемента можно настроить. Соединители могут задавать настраиваемые поля метаданных во время индексации. Если соединитель не задает поле, для установки поля используются параметры вашего файла конфигурации.
Файл конфигурации содержит ряд именованных параметров конфигурации метаданных, обозначенных суффиксом .field
, например itemMetadata.title.field= movieTitle
. Если для этих параметров есть значение, оно используется для настройки поля метаданных. Если для именованного параметра метаданных нет значения, метаданные настраиваются с использованием параметра с суффиксом .defaultValue
).
В следующей таблице показаны параметры конфигурации метаданных.
Параметр | Параметр |
Заголовок | itemMetadata.title.field= movieTitle itemMetadata.title.defaultValue= Название элемента. Если title.field не установлено значение, используется значение title.defaultValue . |
URL-адрес исходного репозитория | itemMetadata.sourceRepositoryUrl.field= url itemMetadata.sourceRepositoryUrl.defaultValue=https://www.imdb.com/title/tt0031381/ URL-адрес элемента, используемый в результатах поиска. Вы можете просто установить значение defaultValue для хранения URL-адреса для всего репозитория, например, если ваш репозиторий представляет собой файл CSV и для каждого элемента существует только один URL-адрес. Если sourceRepositoryUrl.field не установлено значение, используется значение для sourceRepositoryUrl.defaultValue . |
Имя контейнера | itemMetadata.containerName.field= containerName itemMetadata.containerName.defaultValue=myDefaultContainerName Имя контейнера элемента, например имя каталога или папки файловой системы. Если containerName.field не установлено значение, используется значение для containerName.defaultValue . |
Тип объекта | itemMetadata.objectType.field= type itemMetadata.objectType.defaultValue= Тип объекта, используемый соединителем, как определено в схеме . Соединитель не будет индексировать структурированные данные, если это свойство не указано. Если objectType.field не установлено значение, используется значение для objectType.defaultValue . |
Создать время | itemMetadata.createTime.field= releaseDate itemMetadata.createTime.defaultValue=1940-01-17 Временная метка создания документа. Если createTime.field не установлено значение, используется значение createTime.defaultValue . |
Время обновления | itemMetadata.updateTime.field= releaseDate itemMetadata.updateTime.defaultValue=1940-01-17 Временная метка последнего изменения элемента. Если для updateTime.field не установлено значение, используется значение updateTime.defaultValue . |
Язык контента | itemMetadata.contentLanguage.field= languageCode itemMetadata.contentLanguage.defaultValue= Язык содержимого индексируемых документов. Если contentLanguage.field не установлено значение, используется значение для contentLanguage.defaultValue . |
Тип пантомимы | itemMetadata.mimeType.field= mimeType itemMetadata.mimeType.defaultValue= Исходный mime-тип ItemContent.content в исходном репозитории. Максимальная длина — 256 символов. Если mimeType.field не установлено значение, используется значение mimeType.defaultValue . |
Метаданные качества поиска | itemMetadata.searchQualityMetadata.quality.field= quality itemMetadata.searchQualityMetadata.quality.defaultValue= Показатель качества элемента, используемый для влияния на качество поиска. Значение должно находиться в диапазоне от 0,0 (самое низкое качество) до 1,0 (самое высокое качество). Значение по умолчанию — 0,0. Если quality.field не установлено значение, используется значение quality.defaultValue . |
Хэш | itemMetadata.hash.field= hash itemMetadata.hash.defaultValue=f0fda58630310a6dd91a7d8f0a4ceda2 Значение хеширования, предоставленное вызывающей стороной API. Это можно использовать с методом items.push для расчета измененного состояния. Максимальная длина — 2048 символов. Если для hash.field не установлено значение, используется значение hash.defaultValue . |
Форматы даты и времени
Форматы даты и времени определяют форматы, ожидаемые в атрибутах метаданных. Если файл конфигурации не содержит этого параметра, используются значения по умолчанию. В следующей таблице показан этот параметр.
Параметр | Параметр |
Дополнительные форматы даты и времени | structuredData.dateTimePatterns= MM/dd/uuuu HH:mm:ssXXX Список дополнительных шаблонов java.time.format.DateTimeFormatter , разделенных точкой с запятой. Шаблоны используются при анализе строковых значений для любых полей даты или даты в метаданных или схеме. Значением по умолчанию является пустой список, но форматы RFC 3339 и RFC 1123 поддерживаются всегда. |
Структурированные данные
Cloud Search Indexing API предоставляет службу схемы, которую вы можете использовать для настройки того, как Cloud Search индексирует и обслуживает ваши данные. Если вы используете схему локального репозитория, необходимо указать имя локальной схемы структурированных данных.
Параметр | Параметр |
---|---|
Имя локальной схемы | structuredData.localSchema = mySchemaName Имя схемы считывается из источника данных и используется для структурированных данных репозитория. По умолчанию — пустая строка. |
Качество контента и поиска
Для репозиториев, содержащих контент на основе записей или полей (например, CRM, CVS или база данных), SDK позволяет автоматически форматировать HTML для полей данных. Ваш соединитель определяет поля данных в начале выполнения соединителя, а затем использует шаблон контента для форматирования каждой записи данных перед ее загрузкой в Cloud Search.
Шаблон контента определяет важность каждого значения поля для поиска. Поле HTML <title>
является обязательным и имеет наивысший приоритет. Вы можете назначить уровни важности качества поиска для всех остальных полей контента: высокий, средний или низкий. Любое поле контента, не определенное в определенной категории, по умолчанию имеет низкий приоритет.
Параметр | Параметр |
---|---|
HTML-заголовок контента | contentTemplate.templateName.title = myTitleField HTML-заголовок контента и поле наивысшего качества поиска. Этот параметр необходим только в том случае, если вы используете шаблон содержимого HTML. Значение по умолчанию — пустая строка. |
Высокое качество поиска по полям контента | contentTemplate.templateName.quality.high = hField1,hField2 Поля контента имеют высокий приоритет поиска. По умолчанию — пустая строка. |
Среднее качество поиска для полей контента | contentTemplate.templateName.quality.medium = mField1,mField2 Поля контента имеют средний приоритет поиска. По умолчанию — пустая строка. |
Низкое качество поиска для полей контента | contentTemplate.templateName.quality.low = lField1,lField2 Поля контента имеют низкий приоритет поиска. По умолчанию — пустая строка. |
Неуказанные поля контента | contentTemplate.templateName.unmappedColumnsMode = value Как соединитель обрабатывает неуказанные поля содержимого. Допустимые значения:
|
Включить имена полей в шаблон HTML | contentTemplate.templateName.includeFieldName = true|false Указывает, включать ли имена полей вместе с данными полей в шаблон HTML. По умолчанию установлено значение |
Необычно заданные параметры
Вам редко потребуется устанавливать параметры, перечисленные в этом разделе. Параметры по умолчанию установлены для оптимальной производительности. Google не рекомендует устанавливать для этих параметров значения, отличные от значений по умолчанию, без особых требований в вашем репозитории.
Конфигурация прокси
SDK позволяет настроить соединитель на использование прокси-сервера для исходящих подключений.
Параметры transport.proxy.hostname
и transport.proxy.port
необходимы для включения транспорта через прокси. Другие параметры могут потребоваться, если ваш прокси-сервер требует аутентификации или работает по протоколу SOCKS вместо HTTP. Если transport.proxy.hostname
не задан, SDK не будет использовать прокси.
Параметр | Параметр |
---|---|
Имя хоста | transport.proxy.hostname = hostname Имя хоста для прокси-сервера. Этот параметр обязателен при использовании прокси. |
Порт | transport.proxy.port = port Номер порта прокси-сервера. Этот параметр обязателен при использовании прокси. |
Тип прокси | transport.proxy.type = type Тип прокси. Допустимые значения:
Значение по умолчанию — |
Имя пользователя | transport.proxy.username = username Имя пользователя, которое будет использоваться при создании токена авторизации прокси. Этот параметр является необязательным и его следует устанавливать только в том случае, если ваш прокси-сервер требует аутентификации. |
Пароль | transport.proxy.password = password Пароль, который будет использоваться при создании токена авторизации прокси. Этот параметр является необязательным и его следует устанавливать только в том случае, если ваш прокси-сервер требует аутентификации. |
Траверсеры
SDK позволяет вам указать несколько отдельных обходчиков, чтобы обеспечить параллельный обход хранилища данных. Соединители шаблонов SDK используют эту функцию.
Параметр | Параметр |
---|---|
Размер пула потоков | traverse.threadPoolSize = size Число потоков, создаваемых соединителем для обеспечения параллельной обработки. Один итератор последовательно извлекает операции (обычно объекты RepositoryDoc), но API вызывает процессы параллельно, используя это количество потоков. Значение по умолчанию — |
Размер раздела | traverse.partitionSize = batchSize Количество Значение по умолчанию — |
Запросы на опрос Traverser
Ядром очереди индексирования Cloud Search является приоритетная очередь, содержащая запись для каждого известного элемента. Соединитель листинга может запросить опрос элементов из API индексирования. Запрос опроса получает записи с наивысшим приоритетом из очереди индексирования.
Следующие параметры используются шаблоном соединителя списка SDK для определения параметров опроса.
Параметр | Параметр |
---|---|
Обход репозитория | repository.traversers = t1, t2, t3, ... Создает один или несколько отдельных обходчиков, где t1 , t2 , t3 , ... — уникальное имя каждого. Каждый именованный обходчик имеет свой собственный набор настроек, которые идентифицируются по уникальному имени обходчика, например |
Очередь для опроса | traverser.pollRequest.queue = mySpecialQueue Имена очередей, которые опрашивает этот обходчик. По умолчанию используется пустая строка (подразумевается «по умолчанию»). |
traverser. t1 .pollRequest.queue = mySpecialQueue Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс). | |
Поведение опроса | traverser.pollRequest.limit = maxItems Максимальное количество элементов, возвращаемых из запроса на опрос. Значение по умолчанию — |
traverser. t1 .pollRequest.limit = limit Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс). | |
Статус товара | traverser.pollRequest.statuses = statuses Статусы конкретного элемента, которые опрашивает этот обходчик, где statuses могут быть любой комбинацией |
traverser. t1 .pollRequest.statuses = statusesForThisTraverser Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс). | |
Загрузка хоста | traverser.hostload = threads Максимальное количество активных параллельных потоков, доступных для опроса. Значение по умолчанию — |
traverser. t1 .hostload = threadsForThisTraverser Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс). | |
Тайм-аут | traverser.timeout = timeout Значение тайм-аута для прерывания этой попытки опроса обходчика. Значение по умолчанию — |
traverser. t1 .timeout = timeoutForThisTraverser Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс). | |
traverser.timeunit = timeoutUunit Единицы тайм-аута. Допустимые значения: | |
траверсер. t1 .timeunit = timeoutUnit Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс). |
В большинстве случаев соединителю, использующему шаблон соединителя списка SDK, требуется только один набор параметров для опроса. В некоторых случаях вам может потребоваться определить более одного критерия опроса, если ваш алгоритм обхода требует, например, разделения обработки элементов с использованием разных очередей.
В этом случае у вас есть возможность определить несколько наборов параметров опроса. Начните с указания имен наборов параметров с помощью repository.traversers
. Для каждого определенного имени траверса укажите в файле конфигурации параметры из таблицы выше, заменив t1
именем траверса. Это создает набор параметров опроса для каждого определенного траверса.
Контрольно-пропускные пункты
Контрольная точка полезна для отслеживания состояния инкрементального обхода.
Параметр | Параметр |
---|---|
Каталог контрольных точек | connector.checkpointDirectory = /path/to/checkpoint Указывает путь к локальному каталогу, который будет использоваться для контрольных точек добавочного и полного обхода. |
Загрузка контента
Содержимое элемента загружается в Cloud Search вместе с элементом, когда размер содержимого не превышает указанный порог. Если размер контента превышает пороговое значение, контент загружается отдельно от метаданных и структурированных данных элемента.
Параметр | Параметр |
---|---|
Порог содержания | api.contentUploadThresholdBytes = bytes Пороговое значение для контента, определяющее, загружается ли оно «вместе» с элементом, а не при отдельной загрузке. Значение по умолчанию — |
Контейнеры
Полный шаблон соединителя использует алгоритм, включающий концепцию переключения очереди временного источника данных для обнаружения удаленных записей в базе данных. Это означает, что при каждом полном обходе извлеченные записи, находящиеся в новой очереди, заменяют все существующие записи Cloud Search, проиндексированные с предыдущего обхода, которые находятся в старой очереди.
Параметр | Параметр |
---|---|
Тег имени контейнера | traverse.queueTag = instance Чтобы параллельно запускать несколько экземпляров соединителя для индексации общего репозитория данных (в разных репозиториях данных или отдельных частях общего репозитория данных), не мешая друг другу, назначайте уникальный тег имени контейнера для каждого запуска соединителя. Уникальный тег имени не позволяет экземпляру соединителя удалять чужие записи. Тег имени добавляется к идентификатору очереди переключения соединителя полного обхода. |
Отключить обнаружение удаления | traverse.useQueues =true|false Указывает, использует ли соединитель логику переключения очереди для обнаружения удаления. Значение по умолчанию — Примечание . Этот параметр конфигурации применим только к соединителям, реализующим шаблон |
Пакетная политика
SDK поддерживает пакетную политику, которая позволяет выполнять следующие действия:
- Пакетные запросы
- Укажите количество запросов в пакетной очереди
- Управление одновременным выполнением пакетов
- Сбросить пакетные запросы
SDK группирует запросы соединителя для увеличения пропускной способности во время загрузки. Триггером SDK для загрузки пакета запросов является либо количество запросов, либо время ожидания, в зависимости от того, что наступит раньше. Например, если время задержки пакета истекло, а размер пакета не был достигнут, или если количество элементов размера пакета достигнуто до истечения времени задержки, запускается пакетная загрузка.
Параметр | Параметр |
---|---|
Пакетные запросы | batch.batchSize Пакетные запросы вместе. Значение по умолчанию — |
Количество запросов в пакетной очереди | batch.maxQueueLength = maxQueueLength Максимальное количество запросов в пакетной очереди на выполнение. Значение по умолчанию — |
Одновременное выполнение пакетов | batch.maxActiveBatches = maxActiveBatches Количество допустимых одновременно исполняемых пакетов. Значение по умолчанию — |
Автоматическая очистка пакетных запросов | batch.maxBatchDelaySeconds = maxBatchDelay Количество секунд ожидания перед автоматической очисткой пакетных запросов. Значение по умолчанию — |
Сбрасывать пакетные запросы при завершении работы | batch.flushOnShutdown = true|false Сбрасывать пакетные запросы во время завершения работы службы. Значение по умолчанию — |
Обработчики исключений
Параметры обработчиков исключений определяют, как будет действовать обходчик после обнаружения исключения.
Параметр | Параметр |
---|---|
Инструкция траверсера в случае ошибки | traverse.exceptionHandler = exceptions Как должен действовать обходчик после возникновения исключения. Допустимые значения:
|
Время ожидания между исключениями | abortExceptionHander.backoffMilliSeconds = backoff Время ожидания в миллисекундах между обнаруженными исключениями обработчика (обычно используется при обходе репозитория). Значение по умолчанию — |