Skip to content

Подключение Elasticsearch или OpenSearch

Elasticsearch и OpenSearch — поисковые движки, позволяющие в режиме, близком к реальному времени, хранить, искать и анализировать большие объёмы данных. В сервисе Webim такой движок используется как дополнительное хранилище истории чатов, чтобы сократить время ответа при большом числе диалогов. Ниже — подключение к Webim; шаги для Elasticsearch и OpenSearch совпадают по смыслу, отличаются только установка кластера и значение type в db.json.

Начиная с Webim Server 10.8 сервер подключается к поисковому кластеру через клиент OpenSearch (пакет opensearch-py): в конфигурации допускаются типы соединения elastic, elasticsearch и opensearch — укажите тот, который соответствует вашему продукту. Рекомендуемый ключ секции в dbshistory (поддерживается и прежний ключ elastic). Параметры учётной записи, хоста, порта и шаблона имён индексов те же, что и для Elasticsearch.

Инструкция по подключению

  1. Установите Elasticsearch или OpenSearch на отдельный физический или виртуальный сервер. Для Elasticsearch ориентируйтесь на официальную инструкцию по установке:

    Для OpenSearch используйте документацию по установке.

    Требования к серверу поиска можно посмотреть в этих руководствах и в статье о хранилищах.

    Кластер Elasticsearch можно масштабировать по официальной документации; для OpenSearch — по документации OpenSearch.

  2. Обратитесь в техническую поддержку за компонентом data-storager, который переносит данные из аналитической СУБД (MySQL, PostgreSQL) в поисковый кластер (Elasticsearch или OpenSearch), и за инструкциями по его установке.

  3. Дополните конфигурационный файл /etc/webim/db.json блоком подключения к поисковому кластеру. Пример для Elasticsearch (type: elastic, elasticsearch или opensearch — на Webim Server 10.8+ поддерживаются все три варианта):

    "dbs": {
      "elastic": {
        "default": {
          "type": "elastic",
          "host": "YOUR_IP_ADDRESS",
          "port": PORT, # default = 9200
          "user": "elastic",
          "password": "ELASTIC_PASSWORD",
          "scheme": "http",
          "index_name_template": "{account}-{object}"
        }
      }
    }
    

    Для OpenSearch задайте, например, "type": "opensearch" и учётные данные пользователя вашего кластера OpenSearch (имя пользователя может отличаться от elastic).

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

    N.B.

    Нужна учётная запись с полными правами на работу с индексами в выбранном поисковом кластере (как для Elasticsearch, так и для OpenSearch).

  4. Перезагрузите Chat Backend.

  5. Активируйте в account config необходимые Вам параметры:

    • elasticsearch_history: поиск в истории диалогов через поисковый кластер (Elasticsearch или OpenSearch). Процесс поиска ускоряется, но данные о новых диалогах в истории будут появляться с задержкой;

    • elasticsearch_threadprocessor: экспорт протоколов чатов в тот же кластер. Для работы необходимо активировать elasticsearch_history.

Kafka и data-storager

Если для интеграции с Elasticsearch или OpenSearch используется сервис data-storager (выгрузка истории диалогов и сопутствующих объектов), необходима установленная и доступная Apache Kafka.
data-storager публикует и читает сообщения из Kafka (режимы producer и consumer), поэтому необходимо обеспечить:

  • доступ к брокеру/кластеру Kafka (bootstrap servers) из инфраструктуры Webim;

  • наличие топиков и прав на запись/чтение для сервисной учетной записи;

  • при использовании защищенных профилей — корректные параметры авторизации/шифрования (SASL/SSL).

Маркер соответствия аккаунта для data-storager

Назначение

Маркер соответствия связывает аккаунт с конкретным инстансом data-storager. Producer data-storager создаёт задачи на перекачку данных только для тех аккаунтов, у которых значение es_storager_key в meta-БД совпадает со значением переменной окружения сервиса.

Где задаются значения

  • В окружении data-storager (файл .env сервиса): переменная ES_KEY_VALUE — строка, с которой producer сравнивает значение из meta-БД (см. репозиторий сервиса: .env.template, deploy/.es-storager.env.example).

  • В meta-БД, таблица accountkeyvalue: строка с key = 'es_storager_key' и value, совпадающим с ES_KEY_VALUE из .env инстанса data-storager, который должен обрабатывать этот аккаунт.

N.B.

Имя ключа в meta-БД — историческое (es_storager_key); в переменных окружения актуальное имя — ES_KEY_VALUE (так его читает producer в коде сервиса). Значения в БД и в .env должны совпадать посимвольно.

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

Отсутствует. Значение необходимо задать явно. Пустые/несогласованные значения недопустимы.


Последнее обновление страницы: 13 апреля 2026 г.