Установить систему Elasticsearch

В данном разделе приведена инструкция по установке Elasticsearch на Windows и Linux. Перед установкой ознакомьтесь с требованиями системы Elasticsearch в разделе по ссылке.

Систему полнотекстового поиска Elasticsearch нужно устанавливать в следующих случаях:
  • Планируется использовать функцию полнотекстового поиска по содержимому карточек.

  • Будет использоваться СУБД PostgreSQL.

    Если планируется использовать СУБД Microsoft SQL, можно также использовать Elasticsearch или встроенную функцию полнотекстового поиска Microsoft SQL.

  • Планируется использовать функцию агрегации в Web-клиенте.

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

  1. Загрузите систему Elasticsearch.

    • Для ОС Windows загрузите инсталлятор с сайта Elasticsearch или по данной ссылке и установите на компьютер. При установке не изменяйте настройки по умолчанию.

      Рекомендуемая версия: Elasticsearch 7.14.0. Работоспособность с более высокими версиями не тестировалась.
    • Для ОС Linux загрузите подходящий установочный пакет в зависимости от дистрибутива Linux. Например:

      • Astra Linux

      • РЕД ОС

      $ sudo dpkg -i elasticsearch-7.14.0-amd64.deb
      $ sudo rpm -i elasticsearch-7.14.0-x86_64.rpm

      При желании можно использовать настроенное зеркало репозитория с пакетами Elasticsearch.

  2. Скачайте вручную и установите компонент "Ingest Attachment Processor" (позволяет индексировать файлы карточек) для Elasticsearch версии 7.14.0 с сайта Elasticsearch или по данной ссылке.

  3. Создайте папку hunspell с подпапками en_US и ru_RU в директории:

    • ОС Windows

    • ОС Linux

    C:\ProgramData\Elastic\Elasticsearch\config
    /etc/elasticsearch/
  4. Сохраните словари Hunspell для Elasticsearch версии 7.14.0 в папки на компьютере, созданные на предыдущем шаге. Скачать словари можно по ссылкам ниже.

    Словари необходимы для индексации с учетом морфологии.

    1. Откройте указанные ниже файлы в браузере:

    2. Вызовите контекстное меню в окне браузера и выберите пункт Сохранить как…​

      Сохранить как для файла
      Рисунок 1. Сохранить как для файла "ru_RU.aff"
    3. В открывшемся окне проводника проверьте путь до папки и имя файла, затем нажмите Сохранить.

      • Путь до папки для файлов ru_RU.dic и ru_RU.aff.

        • ОС Windows

        • ОС Linux

        C:\ProgramData\Elastic\Elasticsearch\config\hunspell\ru_RU
        /etc/elasticsearch/hunspell/ru_RU/
      • Путь до папки для файлов en_US.dic и en_US.aff.

        • ОС Windows

        • ОС Linux

        C:\ProgramData\Elastic\Elasticsearch\config\hunspell\en_US
        /etc/elasticsearch/hunspell/en_US/

        Расширение файлов должно быть .dic и .aff, тип файла должен быть Все файлы.

        Не выбирайте тип файла Текстовый документ и не указывайте в имени файла расширение .txt.

        Сохранение файла
        Рисунок 2. Сохранение файла "ru_RU.dic"
      • Если словари планируется загружать прямо с сервера, можно воспользоваться командами:

        mkdir -p /etc/elasticsearch/hunspell/{en_US,ru_RU}/
        
        (1)
        sudo curl -Lo /etc/elasticsearch/hunspell/en_US/en_US.aff https://raw.githubusercontent.com/LibreOffice/dictionaries/master/en/en_US.aff
        sudo curl -Lo /etc/elasticsearch/hunspell/en_US/en_US.dic https://raw.githubusercontent.com/LibreOffice/dictionaries/master/en/en_US.dic
        sudo curl -Lo /etc/elasticsearch/hunspell/ru_RU/ru_RU.aff https://raw.githubusercontent.com/LibreOffice/dictionaries/master/ru_RU/ru_RU.aff
        sudo curl -Lo /etc/elasticsearch/hunspell/ru_RU/ru_RU.dic https://raw.githubusercontent.com/LibreOffice/dictionaries/master/ru_RU/ru_RU.dic
        
        (2)
        sudo chown -R root:elasticsearch /etc/elasticsearch/hunspell/
        1 Загрузите словари.
        2 Измените права.
  5. От имени администратора выполните в консоли:

    ОС Windows
    "C:\Program Files\Elastic\Elasticsearch\bin\Elasticsearch-plugin.bat" install file://%%path-to-ingest-attachment-7.14.0.zip%% (1)
    1 %%path-to-ingest-attachment-7.14.0.zip%% необходимо заменить на путь загрузки компонента.
    ОС Linux
    sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch "file://$(realpath ingest-attachment-7.14.0.zip)" (1)
    1 Если архив с плагином не располагается в текущем рабочем каталоге, можно сменить рабочий каталог или указать абсолютный путь до архива с префиксом file://.
  6. Если система Elasticsearch установлена отдельно от сервера Docsvision, настройте прослушивание публичного адреса.

    По умолчанию Elasticsearch прослушивает только локальный адрес localhost, делая невозможным подключение сервиса полнотекстового индексирования Docsvision.

    Чтобы настроить прослушивание публичного адреса, выполните следующие действия:
    1. Откройте конфигурационный файл Elasticsearch:

      • ОС Windows

      • ОС Linux

      C:\ProgramData\Elastic\Elasticsearch\config\Elasticsearch.yml
      /etc/elasticsearch/elasticsearch.yml
    2. Добавьте в конец файла строку:

      network.host: ${HOSTNAME}
    3. Сохраните изменения.

      Если не установлены дополнительные меры ограничения, данные полнотекстового индексирования станут публичными.
  7. При установке на Linux убедитесь, что значение vm.max_map_count больше или равно 262144 командой sysctl vm.max_map_count. При установке на Windows пункт можно проигнорировать.

    Задать значение можно следующим образом:
    echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/elasticsearch.conf
    sudo sysctl --system
  8. Запустите службу Elasticsearch.

    • ОС Windows

    • ОС Linux

    sc.exe start elasticsearch
    sudo systemctl start elasticsearch

Установка с помощью Docker

  1. Используйте образ packages.docsvision.com/elasticsearch:7.14.0 или соберите его самостоятельно:

    FROM elasticsearch:7.14.0
    
    RUN elasticsearch-plugin install --batch ingest-attachment
    
    ADD --chown=elasticsearch:root \
        https://raw.githubusercontent.com/LibreOffice/dictionaries/master/en/en_US.aff \
        https://raw.githubusercontent.com/LibreOffice/dictionaries/master/en/en_US.dic \
        /usr/share/elasticsearch/config/hunspell/en_US/
    
    ADD --chown=elasticsearch:root \
        https://raw.githubusercontent.com/LibreOffice/dictionaries/master/ru_RU/ru_RU.aff \
        https://raw.githubusercontent.com/LibreOffice/dictionaries/master/ru_RU/ru_RU.dic \
        /usr/share/elasticsearch/config/hunspell/ru_RU/
  2. Для загрузки плагина потребуется VPN. Альтернативный вариант — вместо ingest-attachment указать адрес своего веб-сервера с этим архивом, например, https://example.com/elastic/ingest-attachment-7.14.0.zip, или использовать локальную копию архива file://абсолютный-путь-до-архива, которая может быть добавлена в образ через COPY, монтирование, или иным способом.

  3. Запустить можно из docker-compose.yml, ниже представлен минимальный рабочий вариант:

    version: "3.8"
    
    services:
      elasticsearch:
        image: packages.docsvision.com/elasticsearch:7.14.0
        ports:
          - 9200:9200
        environment:
          - discovery.type=single-node
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
        volumes:
          - data:/usr/share/elasticsearch/data
        ulimits:
          memlock:
            soft: -1
            hard: -1
          nofile:
            soft: 65535
            hard: 65535
    
    volumes:
      data:
        driver: local
  4. Перед запуском нужно убедиться, что vm.max_map_count больше или равно 262144 командой sysctl vm.max_map_count. Задать значение можно следующим образом:

    echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/elasticsearch.conf
    sudo sysctl --system
  5. Команда запуска:

    docker compose up (1)
    docker stack deploy -c docker-compose.yml es (2)
    1 Вариант с docker compose.
    2 Вариант с docker в swarm mode.

Первичная конфигурация Elasticsearch

  1. В конфигурационный файл Elasticsearch добавьте следующую строку:

    discovery.type: single-node
    Добавлять строку необходимо в следующих случаях:
    • Если информация о системе Elasticsearch не отображается.

    • Если возникают ошибки подключения к серверу службы Elasticsearch.

    • Если система Elasticsearch не работает.

  2. Проверьте доступность системы Elasticsearch.

    Откройте в веб-браузере (на компьютере с Elasticsearch, если прослушивается только локальный адрес, или на любом другом компьютере, если прослушивается публичный адрес) страницу http://Elasticsearch-address:9200.

    Должна отобразиться информация о системе Elasticsearch:
    {
      "name" : "elastic.company.com",
      "cluster_name" : "Elasticsearch",
      "cluster_uuid" : "H9LHsBYIQMeEZsCytXOIbQ",
      "version" : {
        "number" : "5.5.0",
        "build_hash" : "260387d",
        "build_date" : "2017-06-30T23:16:05.735Z",
        "build_snapshot" : false,
        "lucene_version" : "6.6.0"
      },
      "tagline" : "You Know, for Search"
    }

    Журнал работы системы располагается в папке.

    • ОС Windows

    • ОС Linux

    C:\ProgramData\Elastic\Elasticsearch\logs
    /var/log/elasticsearch/

    Включение функции полнотекстового поиска в Docsvision рассмотрено в пункте Настройка полнотекстового поиска.

  3. В зависимости от нагрузки, необходимости кластеризации и других условий, выполните настройку согласно документации Elasticsearch.

  4. Продолжите настройку Elasticsearch согласно инструкции в разделе Подключить полнотекстовый поиск Elasticsearch.