Как установить ElasticSearch 7
Ввиду того, что в будущем я планирую выпустить несколько статьей, основанных на работе с ElasticSearch, в этой статье я решил показать самые распространённые варианты его установки. В этой статье собраны все варианты установки Elasticsearch 7: на Ubuntu 18.10, Windows 10, Docker, Vagrant Homestead. Многие ищут статьи на тему быстрого старта по работе с ES, однако, любой старт начинается именно с установки^^.
- Установка Elasticsearch на Linux (Ubuntu 18.10)
- Установка Elasticsearch на Docker
- Установка Elasticsearch в Vagrant
- Установка Elasticsearch на Windows 10
Установка Elasticsearch на Linux/Ubuntu
Для того, чтобы установить Elasticsearch на Ubuntu, нужно открыть страницу их офф.документации.
При установке я использую Ubuntu 18.10, но, даже, если у вас другая версия, то процесс не будет иметь кардинальных отличий.
Для работы Elasticsearch на Linux, нужно сначала установить Java 8 версии, или более новую. Для этого, выполните код:
sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version
И получите окно вывод примерно с таким содержимым:
После чего, приступим к установке самого Elasticsearch.
Сначала нужно выполнить:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
В результате чего, эта команда должна вернуть ответ: OK
.
После чего:
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
Этой командой мы установим ElasticSearch 7 версии. Если вам нужна какая-то конкретная версия, или более старая версия, то измените версию на нужную, вместо
7.x
После чего, выполним следующие команды:
sudo apt update
sudo apt install elasticsearch
После выполнения этих команд, Elasticsearch будет установлен. Однако, он не запустится сразу после установки, запустить его придётся вручную, выполнив:
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
И теперь, для того, чтобы удостовериться, что Elasticsearch успешно установлен, можем отправить HTTP-запрос на 9200 порт, на котором висит ES. Запрос отправим с помощью curl:
curl -X GET "localhost:9200/"
И вы должны увидеть что-то вроде этого:
Сам запуск Elastsearch займёт где-то 5-10 секунд. Потому, если вы увидете сообщение curl: (7) Failed to connect to localhost port 9200: Connection refused
, подождите несколько секунд, и повторите свой запрос.
Если эта ошибка не пропадает, то это означает, что сервис не удаётся запустить. Вероятно, это из-за недостатка оперативной памяти. Для того, чтобы посмотреть подробный лог Elasticsearch, можете выполнить команду:
sudo journalctl -u elasticsearch
Но, уверен, что у вас всё запустилось, мои поздравления!
Настройка Elasticsearch
Если вам интересно, в какой директории Elasticsearch хранит данные, то они находятся в директории /var/lib/elasticsearch
, конфигурационные данные в /etc/elasticsearch
, а настройки Java для Elasticsearch расположены в файле /etc/default/elasticsearch
.
По умолчанию Elasticsearch настроен только для локального доступа, для доступа только изнутри текущей системы, в которую он установлен. Вы не можете достучаться к нему удалённо. И, если клиент подключаемый к Elasticsearch запущен на том же сервере, что и сам Elasticsearch, вам не нужно менять конфигурационные файлы. Если это не так, то есть опция настройки удалённого доступа к Elasticsearch.
Удалённый доступ
Elasticsearch не имеет встроенной системы аутентификации, потому, если вы разрешите удалённый доступ, то получить информацию от Elasticsearch может кто угодно, кто имеет возможность выполнять HTTP-запросы к API. Если вы хотите разрешить удалённый доступ к серверу Elasticsearch, вам нужно настроить файрвол, и разрешить доступ к 9200 порту Elasticsearch сервера только для доверенных клиентов.
В Ubuntu стандартно установлено ПО по настройке файрвол UFW. По умолчанию, UFW установлен в систему, но не включён. Но, перед его включением, добавим одно правило для разрешения входящего трафика по SSH:
sudo ufw allow 22
Теперь, разрешим удалённый доступ для доверенного IP адреса:
sudo ufw allow from x.x.x.x to any port 9200
Вместо
x.x.x.x
напишите ваш реальный IP адрес. В моём случае, команда будет иметь видsudo ufw allow from 134.249.138.171 to any port 9200
Если вы занимаетесь локальной разработкой, то можете не ограничивать доступ по конкретному IP, для этого, вместо предыдущей команды нужно выполнить:
sudo ufw allow to any port 9200
Теперь можно включать UFW:
sudo ufw enable
И последнее, проверим статус файрвола:
sudo ufw status
Где мы должны увидеть добавленное правило:
Теперь, когда файрвол настроен должным образом, следующим шагом будет редактирование конфигов Elasticsearch
, и разрешение внешних подключения к Elasticsearch.
Для этого, откроем конфигурационный файл elasticsearch.yml
:
sudo nano /etc/elasticsearch/elasticsearch.yml
Где нужно найти строку, которая содержит network.host
, её нужно раскомментировать, и изменить значение на 0.0.0.0
, раскомментировать http.port
и добавить некоторые параметры, чтобы конфигурация имела вид:
transport.host: localhost
transport.tcp.port: 9300
network.host: 0.0.0.0
http.port: 9200
Для того, чтобы выйти из редактирования файла в редакторе
nano
, нужно нажатьCTRL+C
, напечатав символ согласияy
.
Теперь, перезагрузим Elastisearch, чтобы изменения вступили в силу:
sudo systemctl restart elasticsearch
И это всё. Теперь у вас есть возможность подключения к Elastisearch удалённо.
И теперь, после всего проделанного, вы знаете, как настроить удалённое подключение к Elasticsearch. Теперь вы можете подключаться из любого места, и любого HTTP-клиента.
В этом пункте было показано, как установить Elasticsearch в Ubuntu 18.10. Теперь вы можете посетить офф.документацию для начала работы и более детального изучения основ работы с Elasticsearch.
Установка ElasticSearch в Docker
Если вы ещё не знакомы к Докером, то на сайте есть отличная статья по работе с ним.
Для начала, нужно скачать образ с предустановленным Elasticsearch:
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.1.0
Теперь, когда скачивание дойдёт до конца, его можно запустить командой:
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.1.0
В результате чего, Elasticsearch станет доступен по адресу localhost:9200.
Установка Elasticsearch в Vagrant
Для того, чтобы установить Elasticsearch в Vagrant (Homestead) нужно добавить опцию elasticsearch
в файле Homestead.yaml
, указав нужную поддерживаемую версию. При создании виртуальной машины, по умолчанию, будет создан кластер под названием homestead.
Вы не должны предоставлять Elasticsearch больше, чем половина вашей доступной оперативной памяти, потому, убедитесь, что ваш Homestead настроен в соответствии этому замечанию.
box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox
elasticsearch: 7
Для того, чтобы прокинуть порты для удалённого доступа, нужно дополнить Homestead.yaml:
box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox
elasticsearch: 7
# новые параметры прокидывания порта
ports:
- send: 9200
to: 9200
И, аналогично, как описывалось в секции настройки удалённого доступа, нужно прописать в файл /etc/elasticsearch/elasticsearch.yml
новые параметры, разрешив удалённый доступ.
Будьте внимательны, и не оставляйте дублирующих параметров. Т.е., удалите старые, по-умолчанию заданные параметры
transport.host
,http.port
, и т.д.
После чего, удалённый доступ заработает. Учтите, что в этом случае, доступ к Elasticsearch будет осуществляться не по адресу localhost:9200, а по параметру IP, указанному в Homestead.yml. В моём случае, это 192.168.10.10:9200.
Установка Elasticsearch на Windows 10
Для установки Elasticsearch на Windows, перейдите на страницу и выберите нужную версия для скачивания (я предпочитаю *.msi
версию).
Используя графический интерфейс, установите настройки: директории для хранения данных, логов, и конфигов, или же, используйте настройки по-умолчанию.
Потом, выберите, установка "as a service" или установка с ручной настройкой, если нужно. Когда установлено "as a service", вы можете так же настроить Windows аккаунт для запуска службы, а так же настроить поведение при старте вашей ОС (запускать ли автоматически и т.д.).
Основные системные настройки производятся на последней странице: указывается имя кластера, имя, размер ОЗУ и настройки сети.
На следующей странице выбора плагинов можно ничего не выбирать, осталось подтвердить начало установки, нажав на кнопку Install.
В конце установки, на вашем компьютере запустится служба Elasticsearch, и убедиться в этом можно, перейдя по адресу localhost:9200.
Резюме
В этой статье я показал, как устанавливать Elasticsearch 7 под разные операционные системы: Ubuntu и Windows. Так же, была рассмотрена установка, запуск и настройка Elasticsearch на Docker и Homestead Vagrant. Это была первая статья по работе с Elasticsearch, для того, чтобы в будущем показать подробные примеры по работе с ним.