На этой странице руководства по Cloud Search показано, как настроить источник данных и коннектор контента для индексации данных. Чтобы начать с самого начала, обратитесь к руководству по началу работы с Cloud Search.
Создайте соединитель
Измените рабочий каталог на каталог cloud-search-samples/end-to-end/connector
и выполните следующую команду:
mvn package -DskipTests
Команда загружает требуемые зависимости, необходимые для построения коннектора контента, и компилирует код.
Создать учетные данные сервисной учетной записи
Для вызова API Cloud Search коннектору требуются учётные данные сервисной учётной записи. Чтобы создать учётные данные:
- Вернитесь в консоль Google Cloud .
- В левой навигационной панели нажмите «Учётные данные» . Откроется страница «Учётные данные».
- Нажмите раскрывающийся список + СОЗДАТЬ УЧЁТНЫЕ ДАННЫЕ и выберите Учётная запись службы . Откроется страница «Создать учётную запись службы».
- В поле Имя учетной записи службы введите «tutorial».
- Запишите значение идентификатора учётной записи службы (сразу после имени учётной записи службы). Это значение будет использовано позже.
- Нажмите «СОЗДАТЬ» . Откроется диалоговое окно «Разрешения учётной записи службы (необязательно)».
- Нажмите «ПРОДОЛЖИТЬ» . Откроется диалоговое окно «Предоставить пользователям доступ к этой учётной записи службы (необязательно)».
- Нажмите «ГОТОВО» . Появится экран «Учётные данные».
- В разделе «Учётные записи служб» нажмите на адрес электронной почты учётной записи службы. Откроется страница «Сведения об учётной записи службы».
- В разделе «Ключи» нажмите на раскрывающийся список «ДОБАВИТЬ КЛЮЧ» и выберите «Создать новый ключ» . Откроется диалоговое окно «Создать закрытый ключ».
- Нажмите СОЗДАТЬ .
- (необязательно) Если появится диалоговое окно «Разрешить загрузку на console.cloud.google.com?», нажмите Разрешить .
- Файл закрытого ключа будет сохранён на вашем компьютере. Запомните расположение загруженного файла. Этот файл используется для настройки коннектора контента, чтобы он мог проходить аутентификацию при вызове API Google Cloud Search.
Инициализировать стороннюю поддержку
Прежде чем вы сможете вызывать любые другие API Cloud Search, необходимо инициализировать стороннюю поддержку Google Cloud Search.
Чтобы инициализировать стороннюю поддержку Cloud Search:
Ваш проект платформы Cloud Search содержит учётные данные сервисной учётной записи. Однако для инициализации сторонней поддержки необходимо создать учётные данные веб-приложения. Инструкции по созданию учётных данных веб-приложения см. в разделе Создание учётных данных . После выполнения этого шага у вас должен быть файл с идентификатором клиента и секретным ключом клиента.
Воспользуйтесь площадкой OAuth 2 от Google для получения токена доступа:
- Нажмите «Настройки» и установите флажок «Использовать собственные учетные данные для авторизации» .
- Введите идентификатор клиента и секретный код клиента из шага 1.
- Нажмите «Закрыть» .
- В поле «Области действия» введите
https://www.googleapis.com/auth/cloud_search.settings
и нажмите «Авторизовать» . Площадка OAuth 2 возвращает код авторизации. - Нажмите «Обменять код авторизации на токены» . Возвращается токен.
Чтобы инициализировать стороннюю поддержку Cloud Search, используйте следующую команду curl. Не забудьте заменить
[YOUR_ACCESS_TOKEN]
на токен, полученный на шаге 2.curl --request POST \ 'https://cloudsearch.googleapis.com/v1:initializeCustomer' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{}' \ --compressed
В случае успеха тело ответа содержит экземпляр
operation
. Например:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" }
В случае неудачи обратитесь в службу поддержки Cloud Search.
Используйте operations.get для проверки того, что сторонняя поддержка инициализирована:
curl \ 'https://cloudsearch.googleapis.com/v1/operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY?key= [YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressed
После завершения сторонней инициализации поле
done
будет установлено вtrue
. Например:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" done: true }
Создать источник данных
Затем создайте источник данных в консоли администратора. Источник данных предоставляет пространство имен для индексации контента с помощью коннектора.
- Откройте консоль администратора Google .
- Нажмите на значок «Приложения». Откроется страница «Управление приложениями».
- Нажмите Google Workspace . Откроется страница «Приложения · Администрирование Google Workspace».
- Прокрутите вниз и нажмите «Cloud Search» . Откроется страница «Настройки Google Workspace».
- Нажмите «Сторонние источники данных ». Откроется страница «Источники данных».
- Нажмите круглый жёлтый значок «+» . Откроется диалоговое окно «Добавить новый источник данных».
- В поле Отображаемое имя введите «tutorial».
- В поле «Адреса электронной почты учётной записи службы» введите адрес электронной почты учётной записи службы, созданной в предыдущем разделе. Если вы не знаете адрес электронной почты учётной записи службы, найдите его на странице «Учётные записи службы» .
- Нажмите кнопку ДОБАВИТЬ . Откроется диалоговое окно «Источник данных успешно создан».
- Нажмите * OK . Запишите идентификатор источника для только что созданного источника данных. Этот идентификатор используется для настройки коннектора контента.
Создайте персональный токен доступа для API GitHub
Для обеспечения достаточной квоты коннектору требуется аутентифицированный доступ к API GitHub. Для простоты коннектор использует персональные токены доступа вместо OAuth. Персональные токены позволяют аутентифицировать пользователя с ограниченным набором разрешений, аналогично OAuth.
- Войдите в GitHub.
- В правом верхнем углу нажмите на изображение своего профиля. Появится раскрывающееся меню.
- Нажмите «Настройки» .
- Нажмите Настройки разработчика .
- Нажмите Персональные токены доступа .
- Нажмите «Сгенерировать персональный токен доступа» .
- В поле «Примечание» введите «Руководство по облачному поиску».
- Проверьте область действия public_repo .
- Нажмите «Сгенерировать токен» .
- Обратите внимание на сгенерированный токен. Он используется коннектором для вызова API GitHub и предоставляет квоту API для индексации.
Настройте соединитель
После создания учетных данных и источника данных обновите конфигурацию коннектора, включив в нее следующие значения:
- В командной строке измените каталог на
cloud-search-samples/end-to-end/connector/
. - Откройте файл
sample-config.properties
с помощью текстового редактора. - Задайте для параметра
api.serviceAccountPrivateKeyFile
путь к файлу учетных данных службы, которые вы ранее загрузили. - Задайте параметр
api.sourceId
равным идентификатору ранее созданного вами источника данных. - Задайте параметр
github.user
в соответствии с вашим именем пользователя GitHub. - Задайте параметр
github.token
на ранее созданный вами токен доступа. - Сохраните файл.
Обновить схему
Коннектор индексирует как структурированный, так и неструктурированный контент. Перед индексацией данных необходимо обновить схему источника данных. Выполните следующую команду для обновления схемы:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.SchemaTool \
-Dexec.args="-Dconfig=sample-config.properties"
Запустите соединитель
Чтобы запустить коннектор и начать индексацию, выполните команду:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.GithubConnector \
-Dexec.args="-Dconfig=sample-config.properties"
Коннектор по умолчанию настроен на индексирование одного репозитория в организации googleworkspace
. Индексирование репозитория занимает около 1 минуты. После первоначального индексирования коннектор продолжает опрашивать репозиторий на предмет изменений, которые необходимо отразить в индексе Cloud Search.
Проверка кода
В остальных разделах рассматривается конструкция соединителя.
Запуск приложения
Точкой входа в коннектор является класс GithubConnector
. main
метод создаёт экземпляр IndexingApplication
из SDK и запускает его.
ListingConnector
, предоставляемый SDK, реализует стратегию обхода, которая использует очереди Cloud Search для отслеживания состояния элементов в индексе. Он делегирует доступ к контенту GitHub через GithubRepository
, реализованный в примере коннектора.
Обзор репозиториев GitHub
Во время полного обхода вызывается метод getIds()
для помещения в очередь элементов, которые может потребоваться индексировать.
Коннектор может индексировать несколько репозиториев или организаций. Чтобы минимизировать последствия сбоя, одновременно выполняется обход только одного репозитория GitHub. Возвращается контрольная точка с результатами обхода, содержащая список репозиториев для индексации при последующих вызовах getIds()
. В случае ошибки индексация возобновляется с текущего репозитория, а не начинается с начала.
Метод collectRepositoryItems()
обрабатывает обход одного репозитория GitHub. Этот метод возвращает коллекцию ApiOperations
, представляющую элементы, которые необходимо добавить в очередь. Элементы добавляются в очередь в виде имени ресурса и хэш-значения, отражающего текущее состояние элемента.
Значение хеша используется при последующих обходах репозиториев GitHub. Это значение обеспечивает лёгкую проверку на изменение содержимого без необходимости загрузки дополнительного контента. Коннектор автоматически помещает все элементы в очередь. Если элемент новый или значение хеша изменилось, он становится доступным для опроса в очереди. В противном случае элемент считается неизменённым.
Обработка очереди
После завершения полного обхода коннектор начинает опрашивать очередь на предмет элементов, требующих индексации. Для каждого элемента, извлеченного из очереди, вызывается метод getDoc()
. Этот метод считывает элемент из GitHub и преобразует его в представление, подходящее для индексации.
Поскольку соединитель работает с реальными данными, которые могут измениться в любой момент, getDoc()
также проверяет, что элемент в очереди все еще действителен, и удаляет из индекса все элементы, которые больше не существуют.
Для каждого объекта GitHub, индексируемого коннектором, соответствующий метод indexItem()
отвечает за построение представления элемента для Cloud Search. Например, чтобы построить представление для элементов контента:
Далее разверните интерфейс поиска.