Elasticsearch — распределённая поисковая и аналитическая система, которая предназначена для индексирования, хранения и поиска в режиме реального времени. Она основана на библиотеке Apache Lucene и предоставляет мощные возможности полнотекстового поиска и аналитики.
Elasticsearch позволяет выполнять быстрые запросы на поиск и аналитику, что делает её идеальной для приложений, где необходимо обрабатывать большое количество данных в реальном времени, например, для логов и мониторинга.
Elasticsearch взаимодействует через RESTful API. Это позволило сделать её простой в интеграции с другими системами. Запросы выполняются через HTTP с помощью JSON-формата.
В данной статье разберём, как установить Elasticsearch на виртуальную машину, которая работает на Ubuntu 24.04.
Как установить Elasticsearch на Ubuntu 24.04
Компоненты Elasticsearch недоступны в дефолтных репозиториях Ubuntu. Несмотря на это, данные компоненты можно установить с использованием пакетного менеджера apt
, для чего предварительно необходимо добавить в систему источники пакетов Elastic.
Искомые пакеты подписаны при помощи ключа подписи Elasticsearch. Это сделано для защиты вашей системы от подмены пакетов. Пакеты, прошедшие аутентификацию с использованием этого ключа, менеджером apt
будут считаться доверенными. Исходя из этого, сначала следует произвести импорт открытого ключа Elasticsearch GPG, после чего добавить список источников пакетов Elastic.
Сделать это можно с использованием curl
, инструмента командной строки, предназначенного для передачи данных с помощью URL-адресов. В данном случае дополнительно необходимо использовать аргументы -fsSL
, чтобы заглушить весь ход выполнения и возможные ошибки, за исключением сбоя сервера, и позволить curl
выполнить запрос в новом местоположении. Таким образом, выходные данные передаются в команду gpg –dearmor, преобразующую ключ в формат, который может быть использован менеджером apt
для проверки загруженных пакетов.
$ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
Далее добавьте список источников Elastic в директорию sources.list.d
, где пакетный менеджер в итоге их и обнаружит.
$ echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
После чего обновите списки пакетов, чтобы менеджер apt
смог считать новые источники:
$ sudo apt update
И, наконец, при помощи следующей команды установите Elasticsearch.
$ sudo apt install elasticsearch
По окончании инсталляции запустите службу Elasticsearch:
$ sudo systemctl start elasticsearch
И установите службу в автозагрузку для того, чтобы Elasticsearch запускалась при старте операционной системы:
$ sudo systemctl enable elasticsearch
По умолчанию Elasticsearch работает на порту 9200. Чтобы протестировать его доступность, используйте команду curl
и запрос GET
.
$ curl -X GET 'http://localhost:9200'
Вывод команды должен выглядеть примерно следующим образом:
Настройка удалённого доступа
Изначально Elasticsearch прослушивает только локальный интерфейс. Чтобы открыть доступ извне, необходимо сначала получить привилегии суперпользователя, которые понадобятся для дальнейшей настройки:
$ sudo su
После чего перейдите в каталог /etc/elasticsearch/
:
# cd /etc/elasticsearch
Находясь в данной директории, откройте для редактирования основной конфигурационный файл Elasticsearch, в котором настраиваются все ключевые параметры — elasticsearch.yml
.
# nano elasticsearch.yml
В файле найдите параметр network.host
, удалите символ #
перед ним, если он присутствует, и установите его значение в 0.0.0.0
:
network.host: 0.0.0.0
Это позволит Elasticsearch слушать запросы с любого IP-адреса.
Также если ваш сервер это одиночный узел, и вы не планируете использовать кластер из нескольких узлов, в файл добавьте следующую строку:
discovery.type: single-node
Затем закройте файл, сохранив внесённые в него изменения, и перезапустите службу elasticsearch
:
# systemctl restart elasticsearch
После чего выйдите из сессии суперпользователя при помощи команды exit
, либо используя комбинацию клавиш Ctrl
D
.
Далее следует создать в брандмауэре разрешающее правило для порта, на котором работает Elasticsearch. По умолчанию система использует порт 9200. Исходя из этого, при помощи следующей команды добавьте 9200 в список разрешённых портов брандмауэра UFW:
$ sudo ufw allow 9200
Чтобы убедиться в том, что порт 9200 успешно добавлен, выведите на экран состояние брандмауэра:
$ sudo ufw status
При выводе данной команды порт 9200 должен находиться в списке разрешённых.
Теперь на своём локальном компьютере откройте браузер и в строке навигации введите следующий адрес, где замените X.X.X.X
на IP-адрес вашего виртуального сервера, чтобы проверить доступность Elasticsearch.
http://X.X.X.X:9200
Ответ будет возвращён в формате JSON и должен содержать информацию о статусе и версии системы.