Поиск | On-Premise | 2GIS Documentation
On-Premise

Поиск

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

В этой статье описывается, как развернуть и настроить сервисы поиска в вашем окружении. Чтобы узнать, как использовать RESTful API, предоставляемые сервисами поиска, обратитесь к документации соответствующих API (можно найти в основном меню сверху на вкладке «Поиск»).

Архитектура сервисов поиска (On-Premise)

Сервисы поиска состоят из двух сервисов: Catalog API и Search API.

Catalog API предоставляет RESTful API для приложений.

Search API — это поисковый движок, который обрабатывает запросы от Catalog API.

Детальные требования для каждого сервиса описаны в обзорном документе. Дополнительную информацию можно найти в разделе Что нужно учесть перед развертыванием этого документа.

Общая инфраструктура:

  • S3-совместимое хранилище для поисковых индексов (хранилище артефактов развертывания)

Сервисы:

  • Search API

Общая инфраструктура:

  • Хранилище PostgreSQL для данных об объектах. Должны быть установлены следующие расширения: PostGIS 2.5+, PLV8 3.0.0+, JsQuery.

Примечание:

Конфигурация Ingress в файле ниже приведена для примера в ознакомительных целях. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress.

Выполните следующие шаги:

  1. Выполните общие шаги по развертыванию.

    Примечание:

    Не забудьте записать путь к файлу с манифестом, эта информация необходима для развертывания сервисов.

  2. Разверните сервис Search API.

  3. Разверните сервис Catalog API.

  1. Создайте конфигурационный файл values-search.yaml:

    values-search.yaml

    dgctlDockerRegistry: <Docker Registry hostname and port>/2gis-on-premise
    
    dgctlStorage:
        host: <Deployment Artifacts Storage endpoint>
        bucket: <Deployment Artifacts Storage bucket>
        accessKey: <The bucket access key>
        secretKey: <The bucket secret key>
        manifest: <Path to the manifest file>
    
    api:
        resources:
            limits:
                cpu: 1
                memory: 3G
            requests:
                cpu: 100m
                memory: 1G
    nginx:
        resources:
            limits:
                cpu: 1
                memory: 1G
            requests:
                cpu: 100m
                memory: 200Mi
    
    ingress:
        enabled: true
        className: nginx
        hosts:
            - host: search-api.ingress.domain
              paths:
                  - path: '/'
                    pathType: Prefix
    

    Где:

    1. dgctlDockerRegistry: эндпоинт вашего реестра Docker, в котором находятся образы сервисов On-Premise.

    2. dgctlStorage: настройки хранилища артефактов развертывания.

      1. Укажите общие настройки для доступа к хранилищу: эндпоинт, имя бакета, реквизиты для доступа.
      2. manifest: укажите путь до файла с манифестом в формате manifests/1640661259.json. Этот файл содержит в себе описания фрагментов данных, которые требуются сервисам для работы.
    3. api.resources: настройки вычислительных ресурсов для бэкенд-сервиса API. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.

    4. nginx.resources: настройки вычислительных ресурсов для бэкенд-сервиса NGINX. Для получения актуальной информации о рекомендуемых значениях настроек в этой секции см. таблицу с минимальными системными требованиями.

    5. ingress: пример конфигурации ресурса Ingress. Адаптируйте приведенную конфигурацию для соответствия используемому вами Ingress. Этот URL должен быть доступен извне вашего кластера Kubernetes, чтобы пользователи из приватного сегмента сети могли получить доступ к ресурсам по этому URL.

  2. Разверните сервис с помощью Helm, используя подготовленный конфигурационный файл values-search.yaml:

    helm upgrade --install --version=1.0.3 --atomic --values ./values-search.yaml search-api 2gis-on-premise/search-api
    
  1. Настройте хранилище PostgreSQL:

    1. Войдите в PostgreSQL как суперпользователь.

    2. Создайте пользователя catalog:

      create user catalog password '<пароль для пользователя>';
      
    3. Создайте базу catalog для сервиса Catalog API:

      create database catalog owner catalog;
      
      \c catalog
      
      CREATE EXTENSION plv8 WITH SCHEMA pg_catalog;
      CREATE EXTENSION postgis WITH SCHEMA public;
      CREATE EXTENSION jsquery WITH SCHEMA public;
      
  2. Создайте конфигурационный файл values-catalog.yaml:

    values-catalog.yaml

    dgctlDockerRegistry: <Docker Registry hostname and port>/2gis-on-premise
    
    db:
        host: localhost
        port: 5432
        name: catalog
        username: catalog
        password: secret
    
    search:
        url: http://localhost:80
    
    keys:
        endpoint: https://keys-api.host
        serviceKeys:
            places: ''
            geocoder: ''
            suggest: ''
            categories: ''
            regions: ''
    

    Где:

    1. dgctlDockerRegistry: эндпоинт вашего реестра Docker, в котором находятся образы сервисов On-Premise.

    2. db: настройки доступа к серверу PostgreSQL.

      1. host: имя хоста или IP-адрес сервера.
      2. port: порт, на котором слушает сервер.
      3. name: имя базы данных.
      4. username: имя пользователя.
      5. password: пароль пользователя.
    3. search: настройки доступа к сервису Search API.

      1. url: URL сервиса. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
    4. keys: настройки сервиса ключей.

      1. endpoint: URL сервиса. Этот URL должен быть доступен из всех подов вашего кластера Kubernetes.
      2. serviceKeys: сервисные ключи для сохранения статистики использования (см. Получение сервисных ключей).
  3. Разверните сервис с помощью Helm, используя подготовленный конфигурационный файл values-catalog.yaml:

    helm upgrade --install --version=1.0.3 --atomic --values ./values-catalog.yaml catalog-api 2gis-on-premise/catalog-api
    

Чтобы обновить сервис Search API, выполните следующую команду:

helm upgrade --version=1.0.3 --atomic --values ./values-search.yaml search-api 2gis-on-premise/search-api

Чтобы обновить сервис Catalog API, выполните следующую команду:

helm upgrade --version=1.0.3 --atomic --values ./values-catalog.yaml catalog-api 2gis-on-premise/catalog-api

Чтобы проверить работоспособность сервиса Search API, выполните GET-запрос к эндпоинту status:

curl SEARCH_API_HOST/v2/status?f=common

Чтобы проверить работоспособность сервиса Catalog API:

  1. С помощью веб-интерфейса администратора сервиса ключей создайте API-ключ, который предоставляет доступ к Places API.

  2. Выполните следующий GET-запрос, заменив API_KEY на значение созданного ключа:

    curl CATALOG_API_HOST/3.0/items?key=API_KEY&q=east&region_id=220
    

    Этим запросом будет проверена работоспособность сервисов Catalog API и Search API, а также базы данных PostgreSQL.