Параметры конфигурации, предоставленные Google

С каждым соединителем связан файл конфигурации, содержащий параметры, используемые соединителем, например идентификатор вашего репозитория. Параметры определяются как пары ключ-значение , например 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-адресу службы индексирования.

Значением по умолчанию для этого параметра является пустая строка, которая преобразуется в https://cloudsearch.googleapis.com .

Графики обхода

Параметры планирования определяют, как часто соединитель ожидает между проходами.

Параметр Параметр
Полный обход при запуске соединителя schedule.performTraversalOnStart = true|false

Соединитель выполняет полный обход при запуске соединителя, а не ждет истечения первого интервала. Значение по умолчанию — true.

Полный обход после интервала schedule.traversalIntervalSecs = intervalInSeconds

Соединитель выполняет полный обход после заданного интервала. Укажите интервал между обходами в секундах. Значение по умолчанию — 86400 (количество секунд в одном дне).

Выход после одного обхода connector.runOnce = true|false

Соединитель выполняет полный обход один раз, а затем завершает работу. Для этого параметра должно быть установлено значение true , только если вы используете стратегию полного обхода; Стратегии листинга и графиков требуют многократного обхода для обнаружения изменений и индексирования содержимого. Значение по умолчанию — false (не выходить после однократного обхода).

Инкрементный обход после интервала schedule.incrementalTraversalIntervalSecs = intervalInSeconds

Соединитель выполняет инкрементальный обход после указанного интервала. Укажите интервал между обходами в секундах. Значение по умолчанию — 300 (количество секунд в 5 минутах).

Запланированные интервалы очереди опросов schedule.pollQueueIntervalSecs = interval_in_seconds

Интервал между запланированными интервалами очереди опроса (в секундах). Используется только соединителем обхода листинга. Значение по умолчанию — 10.

Списки контроля доступа

Соединитель управляет доступом к элементам с помощью списков ACL. Несколько параметров позволяют защитить доступ пользователей к индексированным записям с помощью списков ACL.

Если в вашем репозитории есть индивидуальная информация ACL, связанная с каждым элементом, загрузите всю информацию ACL, чтобы контролировать доступ к элементам в Cloud Search. Если ваш репозиторий предоставляет частичную информацию ACL или не предоставляет ее вообще, вы можете указать информацию ACL по умолчанию в следующих параметрах, которые SDK предоставляет соединителю.

Параметр Параметр
Режим ACL defaultAcl.mode = mode

Определяет, когда применять ACL по умолчанию. Допустимые значения:

  • none : не использовать ACL по умолчанию (в этом режиме записи недоступны для поиска, если вы не определите отдельные ACL)
  • fallback : использовать ACL по умолчанию, только если ACL еще не существует.
  • append : добавить список ACL по умолчанию к существующему ACL.
  • override : заменить существующий список управления доступом на список управления доступом по умолчанию.

Режим по умолчанию — none .

Публичный список управления доступом по умолчанию defaultAcl.public = true|false

По умолчанию ACL, используемый для всего репозитория, настроен на общедоступный доступ. Значение по умолчанию — false.

Общие считыватели групп 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
Полный доступ к домену Чтобы указать, что каждая индексированная запись будет общедоступна для каждого пользователя в домене, установите для обоих следующих параметров значения:
  • defaultAcl.mode =override
  • defaultACL.public =true
Общий определенный ACL Чтобы указать один ACL для каждой записи хранилища данных, установите все следующие значения параметров:
  • defaultAcl.mode =fallback
  • defaultAcl.public =false
  • defaultAcl.readers.groups = google :group1@mydomain.com, group2 >
  • defaultAcl.readers.users = user1@mydomain.com, user2, google: user3@mydomain.com
  • defaultAcl.denied.groups = group3
  • defaultAcl.denied.users = user4, user5

    Предполагается, что каждый указанный пользователь и группа являются пользователем/группой, определенной в локальном домене, если только у них нет префикса " google: " (буквальная константа).

    Пользователь или группа по умолчанию — это пустая строка. Предоставляйте параметры пользователя и группы, только если для defaultAcl.public установлено значение false . Чтобы перечислить несколько групп и пользователей, используйте списки, разделенные запятыми.

    Если для defaultAcl.mode установлено значение none , записи недоступны для поиска без определенных отдельных списков ACL.

Параметры конфигурации метаданных

Некоторые метаданные элемента можно настроить. Соединители могут задавать настраиваемые поля метаданных во время индексации. Если соединитель не задает поле, для установки поля используются параметры вашего файла конфигурации.

Файл конфигурации содержит ряд именованных параметров конфигурации метаданных, обозначенных суффиксом .field , например itemMetadata.title.field= movieTitle . Если для этих параметров есть значение, оно используется для настройки поля метаданных. Если для именованного параметра метаданных нет значения, метаданные настраиваются с использованием параметра с суффиксом .defaultValue ).

В следующей таблице показаны параметры конфигурации метаданных.

Параметр Параметр
Заголовок itemMetadata.title.field= movieTitle
itemMetadata.title.defaultValue= Gone with the Wind
Название элемента. Если 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= movie
Тип объекта, используемый соединителем, как определено в схеме . Соединитель не будет индексировать структурированные данные, если это свойство не указано.
Если 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= en-US
Язык содержимого индексируемых документов. Если contentLanguage.field не установлено значение, используется значение для contentLanguage.defaultValue .
Тип пантомимы itemMetadata.mimeType.field= mimeType
itemMetadata.mimeType.defaultValue= image/bmp
Исходный mime-тип ItemContent.content в исходном репозитории. Максимальная длина — 256 символов. Если mimeType.field не установлено значение, используется значение mimeType.defaultValue .
Метаданные качества поиска itemMetadata.searchQualityMetadata.quality.field= quality
itemMetadata.searchQualityMetadata.quality.defaultValue= 1
Показатель качества элемента, используемый для влияния на качество поиска. Значение должно находиться в диапазоне от 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

Как соединитель обрабатывает неуказанные поля содержимого. Допустимые значения:

  • APPEND — добавить в шаблон неуказанные поля содержимого.
  • IGNORE — игнорировать неуказанные поля содержимого.

    Значение по умолчанию — APPEND .

Включить имена полей в шаблон HTML contentTemplate.templateName.includeFieldName = true|false

Указывает, включать ли имена полей вместе с данными полей в шаблон HTML. По умолчанию установлено значение true , и имена полей доступны для поиска как часть данных содержимого.

Необычно заданные параметры

Вам редко потребуется устанавливать параметры, перечисленные в этом разделе. Параметры по умолчанию установлены для оптимальной производительности. 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

Тип прокси. Допустимые значения:

  • HTTP — Прокси-сервер принимает и пересылает запросы по HTTP.
  • SOCKS —Прокси-сервер принимает и пересылает пакеты по протоколу SOCKS.

Значение по умолчанию — HTTP .

Имя пользователя transport.proxy.username = username

Имя пользователя, которое будет использоваться при создании токена авторизации прокси. Этот параметр является необязательным и его следует устанавливать только в том случае, если ваш прокси-сервер требует аутентификации.

Пароль transport.proxy.password = password

Пароль, который будет использоваться при создании токена авторизации прокси. Этот параметр является необязательным и его следует устанавливать только в том случае, если ваш прокси-сервер требует аутентификации.

Траверсеры

SDK позволяет вам указать несколько отдельных обходчиков, чтобы обеспечить параллельный обход хранилища данных. Соединители шаблонов SDK используют эту функцию.

Параметр Параметр
Размер пула потоков traverse.threadPoolSize = size

Число потоков, создаваемых соединителем для обеспечения параллельной обработки. Один итератор последовательно извлекает операции (обычно объекты RepositoryDoc), но API вызывает процессы параллельно, используя это количество потоков.

Значение по умолчанию — 5 .

Размер раздела traverse.partitionSize = batchSize

Количество ApiOperation() , которые будут обработаны в пакетах перед получением дополнительных APIOperation .

Значение по умолчанию — 50 .

Запросы на опрос Traverser

Ядром очереди индексирования Cloud Search является приоритетная очередь, содержащая запись для каждого известного элемента. Соединитель листинга может запросить опрос элементов из API индексирования. Запрос опроса получает записи с наивысшим приоритетом из очереди индексирования.

Следующие параметры используются шаблоном соединителя списка SDK для определения параметров опроса.

Параметр Параметр
Обход репозитория repository.traversers = t1, t2, t3, ...

Создает один или несколько отдельных обходчиков, где t1 , t2 , t3 , ... — уникальное имя каждого. Каждый именованный обходчик имеет свой собственный набор настроек, которые идентифицируются по уникальному имени обходчика, например traversers.t1.hostload и traversers.t2.hostload .

Очередь для опроса traverser.pollRequest.queue = mySpecialQueue

Имена очередей, которые опрашивает этот обходчик. По умолчанию используется пустая строка (подразумевается «по умолчанию»).

traverser. t1 .pollRequest.queue = mySpecialQueue

Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс).

Поведение опроса traverser.pollRequest.limit = maxItems

Максимальное количество элементов, возвращаемых из запроса на опрос. Значение по умолчанию — 0 (подразумевается максимум API).

traverser. t1 .pollRequest.limit = limit

Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс).

Статус товара traverser.pollRequest.statuses = statuses

Статусы конкретного элемента, которые опрашивает этот обходчик, где statuses могут быть любой комбинацией MODIFIED, NEW_ITEM (разделенных запятыми). По умолчанию — пустая строка (подразумевается все значения статуса).

traverser. t1 .pollRequest.statuses = statusesForThisTraverser

Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс).

Загрузка хоста traverser.hostload = threads

Максимальное количество активных параллельных потоков, доступных для опроса. Значение по умолчанию — 5.

traverser. t1 .hostload = threadsForThisTraverser

Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс).

Тайм-аут traverser.timeout = timeout

Значение тайм-аута для прерывания этой попытки опроса обходчика.

Значение по умолчанию — 60 .

traverser. t1 .timeout = timeoutForThisTraverser

Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс).

traverser.timeunit = timeoutUunit

Единицы тайм-аута. Допустимые значения: SECONDS, MINUTES,

траверсер. t1 .timeunit = timeoutUnit

Если у вас есть несколько траверсов, установите статусы элементов для каждого траверса (где t1 представляет конкретный траверс).

В большинстве случаев соединителю, использующему шаблон соединителя списка SDK, требуется только один набор параметров для опроса. В некоторых случаях вам может потребоваться определить более одного критерия опроса, если ваш алгоритм обхода требует, например, разделения обработки элементов с использованием разных очередей.

В этом случае у вас есть возможность определить несколько наборов параметров опроса. Начните с указания имен наборов параметров с помощью repository.traversers . Для каждого определенного имени траверса укажите в файле конфигурации параметры из таблицы выше, заменив t1 именем траверса. Это создает набор параметров опроса для каждого определенного траверса.

Контрольно-пропускные пункты

Контрольная точка полезна для отслеживания состояния инкрементального обхода.

Параметр Параметр
Каталог контрольных точек connector.checkpointDirectory = /path/to/checkpoint

Указывает путь к локальному каталогу, который будет использоваться для контрольных точек добавочного и полного обхода.

Загрузка контента

Содержимое элемента загружается в Cloud Search вместе с элементом, когда размер содержимого не превышает указанный порог. Если размер контента превышает пороговое значение, контент загружается отдельно от метаданных и структурированных данных элемента.

Параметр Параметр
Порог содержания api.contentUploadThresholdBytes = bytes

Пороговое значение для контента, определяющее, загружается ли оно «вместе» с элементом, а не при отдельной загрузке.

Значение по умолчанию — 100000 (~100 КБ).

Контейнеры

Полный шаблон соединителя использует алгоритм, включающий концепцию переключения очереди временного источника данных для обнаружения удаленных записей в базе данных. Это означает, что при каждом полном обходе извлеченные записи, находящиеся в новой очереди, заменяют все существующие записи Cloud Search, проиндексированные с предыдущего обхода, которые находятся в старой очереди.

Параметр Параметр
Тег имени контейнера traverse.queueTag = instance

Чтобы параллельно запускать несколько экземпляров соединителя для индексации общего репозитория данных (в разных репозиториях данных или отдельных частях общего репозитория данных), не мешая друг другу, назначайте уникальный тег имени контейнера для каждого запуска соединителя. Уникальный тег имени не позволяет экземпляру соединителя удалять чужие записи.

Тег имени добавляется к идентификатору очереди переключения соединителя полного обхода.

Отключить обнаружение удаления traverse.useQueues =true|false

Указывает, использует ли соединитель логику переключения очереди для обнаружения удаления.

Значение по умолчанию — true , которое указывает, что следует использовать очереди.

Примечание . Этот параметр конфигурации применим только к соединителям, реализующим шаблон FullTraversalConnector .

Пакетная политика

SDK поддерживает пакетную политику, которая позволяет выполнять следующие действия:

  • Пакетные запросы
  • Укажите количество запросов в пакетной очереди
  • Управление одновременным выполнением пакетов
  • Сбросить пакетные запросы

SDK группирует запросы соединителя для увеличения пропускной способности во время загрузки. Триггером SDK для загрузки пакета запросов является либо количество запросов, либо время ожидания, в зависимости от того, что наступит раньше. Например, если время задержки пакета истекло, а размер пакета не был достигнут, или если количество элементов размера пакета достигнуто до истечения времени задержки, запускается пакетная загрузка.

Параметр Параметр
Пакетные запросы batch.batchSize = batchSize

Пакетные запросы вместе. Значение по умолчанию — 10 .

Количество запросов в пакетной очереди batch.maxQueueLength = maxQueueLength

Максимальное количество запросов в пакетной очереди на выполнение. Значение по умолчанию — 1000.

Одновременное выполнение пакетов batch.maxActiveBatches = maxActiveBatches

Количество допустимых одновременно исполняемых пакетов. Значение по умолчанию — 20 .

Автоматическая очистка пакетных запросов batch.maxBatchDelaySeconds = maxBatchDelay

Количество секунд ожидания перед автоматической очисткой пакетных запросов. Значение по умолчанию — 5 .

Сбрасывать пакетные запросы при завершении работы batch.flushOnShutdown = true|false

Сбрасывать пакетные запросы во время завершения работы службы. Значение по умолчанию — true

Обработчики исключений

Параметры обработчиков исключений определяют, как будет действовать обходчик после обнаружения исключения.

Параметр Параметр
Инструкция траверсера в случае ошибки traverse.exceptionHandler = exceptions

Как должен действовать обходчик после возникновения исключения. Допустимые значения:

  • 0 — всегда прерывать обход после обнаружения исключения
  • num_exceptions (например, 10 ) — прерывание после того, как обходчик встретит указанное num_exceptions .

    Значение по умолчанию — 0 (всегда прерывается при ошибке).

  • ignore --игнорировать ошибку
Время ожидания между исключениями abortExceptionHander.backoffMilliSeconds = backoff

Время ожидания в миллисекундах между обнаруженными исключениями обработчика (обычно используется при обходе репозитория). Значение по умолчанию — 10 .