Elasticsearch — это распределённая поисковая и аналитическая система с открытым исходным кодом (под лицензией Elastic License 2.0). Она используется для полнотекстового поиска, анализа логов, метрик и работы с большими объёмами данных в реальном времени. Вместе с Kibana и Logstash образует стек ELK (Elastic Stack).
В этом руководстве я покажу два способа установки Elasticsearch 8 на Debian:
- extrepo (рекомендуемый) — автоматическое управление репозиторием и GPG-ключом
- Ручная настройка — для опытных пользователей или автоматизации
| Метод | Канал | Версия | Обновления | Для кого |
|---|---|---|---|---|
| extrepo рекомендуемый | Официальный репозиторий Elastic | 8.x (текущая стабильная) | Через apt upgrade | Большинство пользователей |
| Ручная настройка | Официальный репозиторий Elastic | 8.x (текущая стабильная) | Через apt upgrade | Скрипты, контроль над файлами |
⚠️ Важные особенности Elasticsearch 8:
- Безопасность включена по умолчанию (TLS, пароль для суперпользователя
elastic) - Встроенный JDK — не нужно устанавливать Java отдельно
- Автогенерация пароля — сохраните его сразу, он показывается только один раз
Предварительные требования
Перед установкой убедитесь, что:
- У вас есть доступ к интернету
- Вы имеете права
sudo(администратора)
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.
✅ Ожидаемый вывод в терминале:
root
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
Способ 1: Установка через extrepo (рекомендуемый)
extrepo — официальный инструмент Debian для управления сторонними репозиториями. Он сам скачает GPG-ключ и создаст файл репозитория.
Шаг 1: Установите extrepo
sudo apt update
sudo apt install -y extrepo
Что делает: Устанавливает пакет extrepo из официальных репозиториев Debian.
Шаг 2: Включите репозиторий Elastic 8
sudo extrepo enable elastic_8
Что делает: Активирует репозиторий Elasticsearch 8.x, который поддерживается extrepo.
Шаг 3: Обновите список пакетов
sudo apt update
Что делает: Обновляет список пакетов из всех репозиториев, включая только что добавленный Elastic.
Шаг 4: Проверьте, что пакет elasticsearch виден
apt-cache policy elasticsearch
✅ Ожидаемый вывод:
elasticsearch:
Installed: (none)
Candidate: 8.19.9
Version table:
8.19.9 500
500 https://artifacts.elastic.co/packages/8.x/apt stable/main amd64 Packages
(версия может отличаться, но важен сам факт наличия строки artifacts.elastic.co)
Способ 2: Ручная настройка репозитория
Этот способ даёт полный контроль над файлами репозитория.
Шаг 1: Установите необходимые утилиты
sudo apt update
sudo apt install -y ca-certificates curl gnupg
Что делает:
ca-certificates— сертификаты для HTTPScurl— для скачивания ключаgnupg— для работы с GPG-ключами
Шаг 2: Добавьте GPG-ключ Elastic
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch.gpg
Что делает:
curl -fsSL— скачивает ключ| sudo gpg --dearmor— преобразует в бинарный формат (требуется APT)-o /usr/share/keyrings/elasticsearch.gpg— сохраняет ключ в системную директорию
Шаг 3: Создайте файл репозитория
cat <<EOF | sudo tee /etc/apt/sources.list.d/elasticsearch.sources
Types: deb
URIs: https://artifacts.elastic.co/packages/8.x/apt
Suites: stable
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /usr/share/keyrings/elasticsearch.gpg
EOF
Что делает:
cat <<EOF ... EOF— создаёт многострочный текстsudo tee— записывает его в файл с правами root
Параметры:
URIs— адрес репозитория ElasticSuites: stable— ветка стабильных версий (единая для всех Debian)Architectures— автоматически подставляет архитектуру системы (amd64, arm64)
Шаг 4: Обновите список пакетов
sudo apt update
Шаг 5: Проверьте, что пакет elasticsearch виден
apt-cache policy elasticsearch
✅ Ожидаемый вывод: аналогично способу 1.
Установка Elasticsearch
После того как репозиторий добавлен (любым способом), установите Elasticsearch:
sudo apt install -y elasticsearch
Что делает: Устанавливает Elasticsearch и встроенный JDK (Java не нужна отдельно).
⚠️ Обратите внимание на вывод установки! Во время установки Elasticsearch автоматически генерирует пароль для пользователя elastic и показывает его на экране:
--------------------------- Security autoconfiguration information ------------------------------
Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.
The generated password for the elastic built-in superuser is : YOUR_GENERATED_PASSWORD
Скопируйте и сохраните этот пароль в надёжном месте. Он показывается только один раз.
Запуск Elasticsearch
Шаг 1: Перезагрузите systemd (чтобы система узнала о новом сервисе)
sudo systemctl daemon-reload
Что делает: Перечитывает все unit-файлы systemd, включая только что созданный при установке Elasticsearch.
Шаг 2: Включите автозапуск и запустите сервис
sudo systemctl enable elasticsearch --now
Что делает:
enable— добавляет в автозагрузку--now— запускает сервис немедленно
Шаг 3: Проверьте, что сервис работает
systemctl status elasticsearch --no-pager --lines=6
✅ Ожидаемый вывод: Active: active (running)
Проверка установки
Способ 1: Через HTTPS API с использованием сертификата
Elasticsearch 8 по умолчанию использует HTTPS и самоподписанный сертификат. Для подключения нужно указать этот сертификат.
curl -s --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:YOUR_PASSWORD https://localhost:9200
Что делает:
--cacert— указывает путь к CA-сертификату Elasticsearch-u elastic:YOUR_PASSWORD— аутентификация (замените на ваш пароль)
✅ Ожидаемый вывод (JSON):
{
"name" : "5ca2df161c1f",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "PVQPLIHURqm2c2c1cmZhIg",
"version" : {
"number" : "8.19.9",
...
},
"tagline" : "You Know, for Search"
}
Способ 2: Проверка здоровья кластера
curl -s --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:YOUR_PASSWORD https://localhost:9200/_cluster/health?pretty
✅ Ожидаемый вывод: "status" : "green" или "status" : "yellow" (для одного узла — нормально).
Сброс пароля (если потеряли)
Если вы не сохранили пароль, показанный при установке, сбросьте его:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -b
Что делает: Генерирует новый пароль для пользователя elastic и выводит его в терминал. Флаг -b означает «batch mode» — без интерактивных вопросов.
Настройка Elasticsearch
Основные файлы конфигурации
| Файл | Назначение |
|---|---|
/etc/elasticsearch/elasticsearch.yml | Основная конфигурация кластера, узлов, сети |
/etc/elasticsearch/jvm.options.d/ | Настройки JVM (памяти) |
/etc/elasticsearch/certs/ | Сертификаты TLS |
/var/lib/elasticsearch/ | Данные (индексы) |
/var/log/elasticsearch/ | Логи |
Настройка имени кластера и узла
Отредактируйте основной конфигурационный файл:
sudo nano /etc/elasticsearch/elasticsearch.yml
Добавьте или раскомментируйте строки:
cluster.name: my-application
node.name: node-1
Что делает: Задаёт имя кластера и имя узла (полезно при нескольких серверах).
Настройка сетевого доступа
По умолчанию Elasticsearch слушает все интерфейсы (0.0.0.0) по HTTPS. Это безопасно (требуется аутентификация), но для тестовой среды можно ограничить localhost.
Для доступа только с localhost:
http.host: 127.0.0.1
Для доступа с других серверов (укажите IP вашего сервера):
network.host: 192.168.1.10
⚠️ Безопасность: Открывая доступ по сети, убедитесь, что файрвол разрешает доступ только доверенным клиентам.
Настройка JVM heap (памяти)
По умолчанию Elasticsearch автоматически определяет размер heap. Для ручной настройки создайте файл:
sudo nano /etc/elasticsearch/jvm.options.d/custom-heap.options
Добавьте строки (например, для 2 ГБ):
-Xms2g
-Xmx2g
Важные правила:
- Значения
XmsиXmxдолжны быть одинаковыми - Heap не должен превышать 50% от оперативной памяти сервера
- Для больших систем рекомендуется держать heap ниже 26-30 ГБ (из-за сжатых указателей)
Настройка vm.max_map_count (важно для продакшена)
Elasticsearch требует увеличения этого параметра ядра.
Проверьте текущее значение:
sysctl vm.max_map_count
✅ Рекомендуемое значение: 1048576 или выше.
Если значение меньше — увеличьте:
sudo sysctl -w vm.max_map_count=1048576
echo "vm.max_map_count=1048576" | sudo tee -a /etc/sysctl.conf
Что делает: Изменяет параметр на лету и добавляет в конфигурацию для сохранения после перезагрузки.
Применение изменений
После любых изменений в конфигурации перезапустите Elasticsearch:
sudo systemctl restart elasticsearch
Настройка UFW (файрвола) — опционально
Если вы открыли доступ к Elasticsearch по сети и используете UFW, ограничьте доступ к порту 9200.
⚠️ Перед включением UFW убедитесь, что SSH разрешён, иначе потеряете доступ!
sudo ufw allow ssh
sudo ufw allow from 192.168.1.20 to any port 9200 proto tcp
sudo ufw enable
Что делает: Разрешает подключения к порту 9200 только с IP-адреса 192.168.1.20.
Проверьте правила:
sudo ufw status numbered
Решение типичных проблем
8.1 Ошибка: SSL certificate problem
Симптом: При попытке подключиться через curl возникает ошибка:
curl: (60) SSL certificate problem: self-signed certificate in certificate chain
Причина: Вы не указали сертификат, сгенерированный Elasticsearch.
Пошаговое решение:
Шаг 1: Используйте правильную команду с --cacert:
curl -s --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:YOUR_PASSWORD https://localhost:9200
Шаг 2: Если сертификата нет по указанному пути, проверьте его наличие:
ls -la /etc/elasticsearch/certs/
Шаг 3: Если сертификат повреждён или отсутствует, переустановите Elasticsearch (данные будут потеряны).
Важно! Перед переустановкой стоит сохранить пароль (если он был изменён) и при необходимости — бэкап данных.
8.2 Ошибка: curl cannot connect to port 9200
Симптом: curl сообщает:
curl: (7) Failed to connect to localhost port 9200 after 0 ms: Could not connect to server
Причина: Сервис Elasticsearch не запущен.
Пошаговое решение:
Шаг 1: Проверьте статус сервиса:
systemctl status elasticsearch
Шаг 2: Запустите сервис:
sudo systemctl start elasticsearch
Шаг 3: Проверьте логи, если запуск не удался:
sudo journalctl -u elasticsearch -n 30 --no-pager
Шаг 4: Ошибки в логах обычно указывают на проблему в elasticsearch.yml или недостаток памяти.
8.3 Ошибка: 401 Unauthorized
Симптом: При запросе к API возвращается 401 Unauthorized.
Причина: Неверный пароль пользователя elastic.
Пошаговое решение:
Шаг 1: Сбросьте пароль:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -b
Шаг 2: Скопируйте новый пароль из вывода команды.
Шаг 3: Повторите запрос с новым паролем.
8.4 Ошибка: Max virtual memory areas vm.max_map_count is too low
Симптом: В логах Elasticsearch (/var/log/elasticsearch/) появляется предупреждение или ошибка:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Причина: Значение vm.max_map_count в ядре меньше рекомендованного.
Пошаговое решение:
Шаг 1: Проверьте текущее значение:
sysctl vm.max_map_count
Шаг 2: Увеличьте значение:
sudo sysctl -w vm.max_map_count=1048576
Шаг 3: Сделайте изменение постоянным:
echo "vm.max_map_count=1048576" | sudo tee -a /etc/sysctl.conf
Шаг 4: Перезапустите Elasticsearch:
sudo systemctl restart elasticsearch
8.5 Ошибка: Not enough disk space
Симптом: Elasticsearch не запускается, в логах ошибка:
low disk watermark [85%] exceeded on ...
Причина: На диске заканчивается свободное место (Elasticsearch требует минимум 5-10% свободного пространства).
Пошаговое решение:
Шаг 1: Проверьте свободное место:
df -h
Шаг 2: Очистите старые логи:
sudo journalctl --vacuum-time=7d
Шаг 3: Удалите ненужные индексы через API:
curl -X DELETE --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:YOUR_PASSWORD https://localhost:9200/имя_индекса
Шаг 4: Если диск действительно заполнен — добавьте место или переместите данные Elasticsearch в другую директорию (изменив path.data в elasticsearch.yml).
Чек-лист: что проверить после установки
- [ ] Репозиторий добавлен:
apt-cache policy elasticsearchпоказывает версию изartifacts.elastic.co - [ ] Пакет установлен:
dpkg -s elasticsearch | grep Status→install ok installed - [ ] Сервис запущен:
systemctl status elasticsearch→active (running) - [ ] Пароль сохранён (или сброшен через
elasticsearch-reset-password) - [ ] API отвечает:
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:пароль https://localhost:9200возвращает JSON - [ ] Кластер здоров:
curl ... /_cluster/health?pretty→"status" : "green"или"yellow" - [ ] vm.max_map_count настроен:
sysctl vm.max_map_count≥ 1048576 - [ ] Файрвол настроен (если сетевой доступ):
sudo ufw statusпоказывает правила для порта 9200
Удаление Elasticsearch
Шаг 1: Остановите и отключите сервис
sudo systemctl stop elasticsearch
sudo systemctl disable elasticsearch
Шаг 2: Удалите пакет
sudo apt remove --purge elasticsearch -y
sudo apt autoremove -y
Шаг 3: Удалите репозиторий (зависит от способа установки)
Если использовали extrepo:
sudo extrepo disable elastic_8
sudo rm -f /etc/apt/sources.list.d/extrepo_elastic_8.sources
Если добавляли репозиторий вручную:
sudo rm -f /etc/apt/sources.list.d/elasticsearch.sources
sudo rm -f /usr/share/keyrings/elasticsearch.gpg
Обновите список пакетов:
sudo apt update
Шаг 4: Удалите данные и логи (опционально — безвозвратно!)
⚠️ Внимание: Удаляет все индексы, данные и логи навсегда.
sudo rm -rf /var/lib/elasticsearch
sudo rm -rf /var/log/elasticsearch
Шаг 5: Проверьте удаление
dpkg -s elasticsearch
✅ Ожидаемый вывод: dpkg-query: package 'elasticsearch' is not installed
Часто задаваемые вопросы (FAQ)
Вопрос: Можно ли установить Elasticsearch без встроенного JDK (использовать системную Java)?
Ответ: Можно, но не рекомендуется. Elasticsearch поставляется с проверенной версией JDK. Если очень нужно, можно удалить встроенный JDK и установить свой, но поддержка не гарантируется.
Вопрос: Elasticsearch работает на ARM-процессорах (Raspberry Pi)?
Ответ: Да, начиная с версии 8.x, Elasticsearch имеет сборки для arm64. Убедитесь, что архитектура определилась правильно (команда dpkg --print-architecture должна показать arm64).
Вопрос: Как подключиться к Elasticsearch с другого компьютера?
Ответ:
- В
elasticsearch.ymlраскомментируйте или добавьтеnetwork.host: 0.0.0.0(или конкретный IP сервера) - Перезапустите Elasticsearch
- Используйте полный URL:
https://IP_сервера:9200 - При подключении используйте
--cacert(скопируйте сертификат на клиентскую машину) или отключите проверку (небезопасно).
Вопрос: Нужно ли отключать security для тестов?
Ответ: Не рекомендуется. В Elasticsearch 8 security включена по умолчанию, и её отключение делает кластер уязвимым. Лучше сбросить пароль, если забыли.
Вопрос: Как обновить Elasticsearch до новой версии?
Ответ: Просто выполните sudo apt update && sudo apt upgrade elasticsearch -y. Конфигурации и данные сохранятся.
Заключение
Теперь Elasticsearch 8 установлен на вашем Debian с включённой безопасностью по умолчанию. Вы можете использовать его для:
- Полнотекстового поиска в приложениях
- Анализа логов (вместе с Logstash)
- Визуализации данных (с Kibana)
Что дальше?
- Изучите официальную документацию Elasticsearch
- Установите Kibana для визуализации данных
- Настройте Logstash для централизованного сбора логов
- Защитите Elasticsearch с помощью UFW или Nginx как обратного прокси