Сервис глобального поиска (Global Search Service) создан для интеграции ElasticSearch c Creatio и выполняет следующие функции:
- Регистрирующую:
- Подписывает клиента, создавая индекс в ElasticSearch и сохраняет связь индекс-приложение.
- Отключает клиента, по требованию удаляя индекс в ElasticSearch.
- Транспортную:
- Участвует в процессе индексации — забирает данные из базы данных.
Последовательность действий при настройке глобального поиска зависит от того, какую версию сервиса вы будете использовать. Для последней версии Creatio рекомендуется всегда использовать новейшую версию сервиса глобального поиска.
Развертывание компонентов глобального поиска версии 3.0 можно выполнять с использованием оркестратора Kubernetes и пакетного менеджера Helm или Docker.
Для поддержания работоспособности сервиса и возможности быстрого восстановления данных после отказа, например, в случае перебоев с электроэнергией, рекомендуется раз в сутки выполнять резервное копирование Elasticsearch.
Если у вас возникнут вопросы в ходе настройки, то рекомендуем ознакомиться со статьей Часто задаваемые вопросы по глобальному поиску и дедупликации.
Настроить сервис глобального поиска с использованием Kubernetes
Для настройки сервиса скачайте исходные файлы. Скачать файлы.
Чтобы установить сервис:
- Настройте целевое окружение:
- Кластер Kubernetes. Подробно о том, как настроить и администрировать кластер, читайте в документации Kubernetes.
- Пакетный менеджер Helm. Установка пакетного менеджера подробно описана в документации Helm.
- Из архива с исходными файлами извлеките файл values-onsite.yaml и сохраните его в ту же папку, где находится архив.
- Откройте извлеченный файл. Основные параметры, которые используются в файле, описаны в таблице ниже.
- Укажите в значении переменной global.searchService.url публичный адрес сервиса в формате http://k8s-node:30332.
Если у вас еще не установлены Redis, RabbitMQ, ElasticSearch и служебная база данных PostgreSQL, то переходите к следующему шагу.
Если эти сервисы были установлены ранее, например, при настройке других контейнерных компонентов, то необходимо в исходном файле сервиса глобального поиска values-onsite.yaml отключить их установку и настроить подключение к существующим сервисам.
- Для Redis:
Отключите установку сервиса. Для этого в секции redis файла values-onsite.yaml установите значение enabled: false.
Настройте подключение к ранее установленному Redis. Для этого в секции global.redis файла values-onsite.yaml укажите параметры подключения.
Где
[host] — адрес сервера Redis;
[port] — порт подключения к Redis-серверу;
[database] — имя базы данных Redis.
- Для RabbitMQ:
Отключите установку сервиса. Для этого в секции rabbitmq файла values-onsite.yaml установите значение enabled: false.
Настройте подключение к ранее установленному RabbitMQ. Для этого в секции global.rabbitmq файла values-onsite.yaml укажите параметры подключения.
Где
[host] — адрес сервиса RabbitMQ;
[vhost] — адрес virtual host сервиса RabbitMQ;
[port] — порт для amqp подключения к RabbitMQ;
[user] — пользователь RabbitMQ;
[password] — пароль пользователя RabbitMQ.
- Для служебной базы данных PostgreSQL:
Отключите установку PostgreSQL. Для этого в секции postgresql файла values-onsite.yaml установите значение enabled: false.
Настройте подключение к служебной базе данных PostgreSQL. Для этого в секции global.postgresql файла values-onsite.yaml укажите параметры подключения.
Где
[user] — пользователь PostgreSQL, под которым выполняется подключение к базе данных;
[password] — пароль пользователя PostgreSQL;
[database] — служебная база данных PostgreSQL;
[host] — адрес базы данных PostgreSQL;
[port] — порт для подключения к базе данных.
- Для ElasticSearch:
Отключите установку ElasticSearch. Для этого в секции elasticsearch файла values-onsite.yaml установите значение enabled: false.
Настройте подключение к ранее установленному ElasticSearch. Для этого в секции global.elasticsearch файла values-onsite.yaml укажите параметры подключения.
Где
[user] — пользователь ElasticSearch;
[password] — пароль пользователя ElasticSearch;
[url] — адрес сервиса ElasticSearch в формате http://elasticsearch:9200.
- Для Redis:
Выполните команду helm install gs -f values-onsite.yaml globalsearch.tgz. В результате будет выполнена установка сервиса глобального поиска вместе со всеми выбранными зависимостями.
Основные параметры сервиса глобального поиска, которые используются в файле values.yaml.
Параметр | Описание параметра |
---|---|
scheduler.env.fillQueueInterval | Периодичность запуска первичной индексации, в миллисекундах. |
worker.env.indexingCommandTimeout | Таймаут запроса в БД Creatio при первичной индексации, в секундах. |
workerSingle.env.indexingCommandTimeout | Таймаут запроса в БД Creatio при мгновенной индексации, в секундах. |
global.incrementDays | Количество дней, за которые будут индексироваться измененные записи в рамках одной итерации первичной индексации. Влияет на скорость индексации и нагрузку на БД Creatio. Чем больше значение, тем быстрее индексация и больше нагрузка. Чем меньше значение, тем дольше индексация и меньше нагрузка. |
log4Net | Настройки логирования. |
global.indexingContentLength | Максимальная длинна текстовых полей при индексации. |
global.elasticsearch | Параметры подключения к ElasticSearch. |
global.searchService | Публичный адрес к search-service, в формате http://k8s-node:30332. |
global.rabbitmq | Настройки подключения к RabbitMQ. |
global.db | Настройки подключения к внутренней сервисной базе данных сервиса глобального поиска. |
global.redis | Настройки подключения к Redis. |
Настроить сервис глобального поиска в Docker
Для настройки глобального поиска необходимы два отдельных физических или виртуальных сервера (“сервер 1” и “сервер 2”) с установленной ОС Linux. Для расчета требований к серверам воспользуйтесь калькулятором системных требований.
С перечнем поддерживаемых ОС вы можете ознакомиться в документации Docker. В зависимости от потребностей вашей компании можно использовать Docker Community Edition (CE) или Enterprise Edition (EE). Подробную информацию вы найдете в документации Docker.
Компоненты глобального поиска
Развертывается на сервере 1:
- elasticsearch — поисковый движок.
Развертываются на сервере 2:
- postgres — база данных конфигурирования компонентов глобального поиска.
- rabbitmq — брокер сообщений.
- redis — хранилище данных, используемое для кеширования и быстродействия.
- gs-web-api — web-сервис конфигурирования компонентов глобального поиска.
- gs-web-indexing-service — web-сервис для обработки запросов точечного индексирования данных из системы.
- gs-search-service — web-сервис поиска данных, proxy для elasticsearch.
- gs-scheduler — планировщик задач индексации данных из Creatio в ElasticSearch.
- gs-worker — компонент индексирования данных из Creatio в ElasticSearch по задачам планировщика.
- gs-worker-replay — компонент, обрабатывающий результаты индексации (результаты работы gs-worker-а).
- gs-worker-single — компонент точечной индексации данных бизнес-процессов в ElasticSearch по запросу из бизнес-процесса.
- gs-worker-single-replay — компонент, обрабатывающий исключения в процессе точечной индексации (результаты работы gs-worker-single).
- gs-worker-single-task — компонент для постановки задач компоненту gs-worker-single.
- gs-worker-querried-single-task — компонент для формирования задач компоненту gs-worker-single.
Для настройки компонентов скачайте исходные файлы. Скачать файлы.
Список портов, используемых компонентами глобального поиска:
Название компонента | Исходящий порт | Входящий порт | Примечание |
---|---|---|---|
gs-web-api | 81 | Входящий порт настраивается переменной WEB_API_PORT | |
gs-web-indexing-service | 82 | Входящий порт настраивается переменной WEB_INDEXING_SERVICE_PORT | |
gs-search-service | 9200 | 83 | Входящий порт настраивается переменной SEARCH_SERVICE_PORT |
gs-worker | 9200 | Необходимо соединение с сервером, на котором расположен elasticsearch | |
gs-worker-single | 9200 | Необходимо соединение с сервером, на котором расположен elasticsearch | |
elasticsearch | 9200 |
Последовательность действий для настройки глобального поиска
- Установить Docker на физическую или виртуальную машину с операционной системой Linux.
- Установить Docker-Compose.
- Установить ElasticSearch.
- Настроить переменные контейнеров.
- Установить и запустить компоненты Global Search Service.
- Подключить функциональность глобального поиска в Creatio.
Установить Docker
Для развертывания компонентов глобального поиска необходимо установить Docker на операционную систему Linux. Для установки воспользуйтесь инструкцией в документации Docker.
Для проверки установленной версии Docker запустите команду docker --version на linux-машине.
Установить Docker-Compose
Для установки Docker-Compose воспользуйтесь инструкцией в документации Docker .
Установить ElasticSearch
Для установки ElasticSearch:
- На сервере, выделенном для установки ElasticSearch (сервер 1), зайдите в папку /opt.
Распакуйте в открытую папку архив с установочными файлами.
Настроить переменные контейнеров
Все контейнеры компонентов глобального поиска конфигурируются из файла с переменными среды (environment variables). Переменные содержатся в файле /opt/compose/services/.env. Установите значения переменных, отредактировав этот файл.
Название переменной | Описание | Значение по умолчанию |
---|---|---|
GS_ES_URL | Внешний хост ElasticSearch, который используется для доступа из Creatio. Необходимо указать ip-адрес сервера, на котором развернут ElasticSearch. | http://elasticsearch-publicip:9200 |
CURRENT_SERVER_IP | Внешний ip-адрес сервера, на котором развернуты сервисы глобального поиска (сервер 2). | 10.0.0.1 |
Дополнительные переменные, которые управляют параметрами индексации данных в ElasticSearch
Название переменной | Описание | Значение по умолчанию |
---|---|---|
GS_DB_INCREMENT_DAYS | Количество дней, которое необходимо проиндексировать за одну итерацию планировщика. Для сравнения используются данные колонки ModifiedOn записей системы. | 500 дней |
GS_DB_FILL_QUEUE_INTERVAL | Интервал сбора данных из БД Creatio регулярным планировщиком. Чем меньше этот параметр, тем выше нагрузка на БД Creatio, но быстрее происходит первичная индексация. | 30000 (указывается в миллисекундах) |
Запустить контейнеры с компонентами Global Search Service
- На сервере, выделенном для установки компонентов глобального поиска (сервер 2), зайдите в папку opt.
- Распакуйте в открытую папку архив с установочными файлами. Скачать архив
Перейдите в папку с компонентами /opt/compose/services и выполните команду:
Проверить успешность запуска контейнеров
Для просмотра всех запущенных контейнеров глобального поиска введите в консоли команду:
Все запущенные контейнеры должны быть со статусом Up.
Логирование
По умолчанию в контейнере логирование происходит в stdout и stderr.
Подключить сервис глобального поиска в Creatio
Действия на сервере
Для подключения глобального поиска к Creatio выполните следующие действия на сервере, где находятся компоненты глобального поиска (для сервиса, развернутоо в Docker, это сервер 2):
Для http-запросов установите утилиту api-get install curl или yum install curl.
- Выполните http-запрос на регистрацию сайта в глобальном поиске, указав:
- DATABASE_TYPE — тип базы данных Creatio (mssql, postgresql или oracle).
- DATABASE_CONNECTION_STRING — строка подключения к БД Creatio.
- SITE_NAME — название сайта Creatio, например, my-test-site.
SERVER2_IP_ADDRESS (только для Docker) — IP-адрес Linux сервера, на котором развернуты компоненты глобального поиска.
GS_WEB_API_URL (только для Kubernetes) — IP-адрес Linux сервера, на котором развернуты компоненты глобального поиска.
Выполните http-запрос на подключение поиска к ранее добавленному сайту, указав:
- SITE_NAME — название сайта Creatio, например, my-test-site.
- TEMPLATE_NAME — название шаблона поиска, который используется в ElasticSearch. Перечень доступных к использованию шаблонов приведен в таблице ниже.
SERVER2_IP_ADDRESS (только для Docker) — IP-адрес Linux сервера, на котором развернуты компоненты глобального поиска.
GS_WEB_API_URL (только для Kubernetes) — IP-адрес Linux сервера, на котором развернуты компоненты глобального поиска.
Все доступные шаблоны поиска и их характеристики приведены в таблице ниже:
Старый шаблон (версия 1.6) | default.json | ngram_2.json | ngram_3.json | without_ngram.json | |
---|---|---|---|---|---|
Поиск по части слова | + | – | + | + | – |
Поиск по слову с опечатками | + | – | + | + | – |
Поиск по части номера телефона в средствах связи | + | + | + | + | – |
Нечеткий поиск по средствам связи | + | + | + | + | – |
Поиск с перестановкой слов | + | + | + | + | + |
Поиск по точному совпадению | + | + | + | + | + |
Поиск по двум символам | – | – | + | – | – |
Примерная скорость поиска (чем меньше, тем лучше) | 1х | 13х | 7х | <1х | |
Размер индекса на elasticsearch (чем меньше, тем лучше) | 1х | 4х | 2,5х | <1х | |
Время полной первичной индексации (чем меньше, тем лучше) | 1х | 1,8х | 1,4х | <1х |
Действия на стороне Creatio для СУБД MS SQL
Включите в Creatio функциональность (Feature Toggle) глобального поиска (GlobalSearch, GlobalSearch_V2 GlobalSearchRelatedEntityIndexing), выполнив sql-скрипт:
- Установите значения системных настроек:
“GlobalSearchUrl” — полный путь в elasticsearch с учетом индекса. Значение настройки возвращается при выполнении запроса на web-api для добавления поиска для сайта.
Пример строки для Docker: http://[SERVER2_IP_ADDRESS]:83/indexname.
Пример строки для Kubernetes: http://[GS-SEARCH-SERVICE_URL] /indexname.
GlobalSearchConfigServiceURL” — ссылка на API глобального поиска.
Значение по умолчанию для Docker: http://[SERVER2_IP_ADDRESS]:81.
Значение по умолчанию для Kubernetes: http:// [GS_WEB_API_URL].
“GlobalSearchIndexingApiUrl” — ссылка на сервис моментальной индексации.
Значение по умолчанию для Docker: http://[SERVER2_IP_ADDRESS]:82.
Значение по умолчанию для Kubernetes: http://[GS-WEB-INDEXING-SERVICE_URL].
- Перезапустите приложение Creatio, очистите redis и выполните вход в приложение.
Действия на стороне Creatio для СУБД Oracle
Включите в Creatio функциональность (Feature Toggle) глобального поиска (GlobalSearch, GlobalSearch_V2 GlobalSearchRelatedEntityIndexing), выполнив sql-скрипт:
Установите значения системных настроек:
Для этого выполните следующий скрипт:
“GlobalSearchUrl” — полный путь в elasticsearch с учетом индекса. Значение настройки возвращается при выполнении запроса на web-api для добавления поиска для сайта.
Пример строки для Docker: http://[SERVER2_IP_ADDRESS]:83/indexname.
Пример строки для Kubernetes: http://[GS-SEARCH-SERVICE_URL] /indexname
GlobalSearchConfigServiceURL” — ссылка на API глобального поиска.
Значение по умолчанию для Docker: http://[SERVER2_IP_ADDRESS]:81.
Значение по умолчанию для Kubernetes: http:// [GS_WEB_API_URL].
“GlobalSearchIndexingApiUrl” — ссылка на сервис моментальной индексации.
Значение по умолчанию для Docker: http://[SERVER2_IP_ADDRESS]:82.
Значение по умолчанию для Kubernetes: http://[GS-WEB-INDEXING-SERVICE_URL].
- Перезапустите приложение Creatio, очистите redis и выполните вход в приложение.
Действия на стороне Creatio для СУБД PostgreSQL
Включите в Creatio функциональность (Feature Toggle) глобального поиска (GlobalSearch, GlobalSearch_V2 GlobalSearchRelatedEntityIndexing), выполнив sql-скрипт:
Установите значения системных настроек:
“GlobalSearchUrl” — полный путь в elasticsearch с учетом индекса. Значение настройки возвращается при выполнении запроса на web-api для добавления поиска для сайта.
Пример строки для Docker: http://[SERVER2_IP_ADDRESS]:83/indexname.
Пример строки для Kubernetes: http://[GS-SEARCH-SERVICE_URL] /indexname.
GlobalSearchConfigServiceURL” — ссылка на API глобального поиска.
Значение по умолчанию для Docker: http://[SERVER2_IP_ADDRESS]:81.
Значение по умолчанию для Kubernetes: http:// [GS_WEB_API_URL].
“GlobalSearchIndexingApiUrl” — ссылка на сервис моментальной индексации.
Значение по умолчанию для Docker: http://[SERVER2_IP_ADDRESS]:82.
Значение по умолчанию для Kubernetes: http://[GS-WEB-INDEXING-SERVICE_URL].
Для этого выполните следующий скрипт:
- Перезапустите приложение Creatio, очистите redis и выполните вход в приложение.