/ elasticsearch

Как установить ElasticSearch 7

Ввиду того, что в будущем я планирую выпустить несколько статьей, основанных на работе с ElasticSearch, в этой статье я решил показать самые распространённые варианты его установки. В этой статье собраны все варианты установки Elasticsearch 7: на Ubuntu 18.10, Windows 10, Docker, Vagrant Homestead. Многие ищут статьи на тему быстрого старта по работе с ES, однако, любой старт начинается именно с установки^^.

Установка 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

И получите окно вывод примерно с таким содержимым:
java_result

После чего, приступим к установке самого 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/"

И вы должны увидеть что-то вроде этого: curl_result

Сам запуск 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

Где мы должны увидеть добавленное правило: firewall

Теперь, когда файрвол настроен должным образом, следующим шагом будет редактирование конфигов 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-клиента.
result-postman


В этом пункте было показано, как установить 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.
docker-postman-result

Установка 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

vagrant_curl_result

Для того, чтобы прокинуть порты для удалённого доступа, нужно дополнить 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 версию).
windows_loader_msi

Используя графический интерфейс, установите настройки: директории для хранения данных, логов, и конфигов, или же, используйте настройки по-умолчанию.
dinwos_dirs

Потом, выберите, установка "as a service" или установка с ручной настройкой, если нужно. Когда установлено "as a service", вы можете так же настроить Windows аккаунт для запуска службы, а так же настроить поведение при старте вашей ОС (запускать ли автоматически и т.д.).
windows_as_service

Основные системные настройки производятся на последней странице: указывается имя кластера, имя, размер ОЗУ и настройки сети.
windows_common

На следующей странице выбора плагинов можно ничего не выбирать, осталось подтвердить начало установки, нажав на кнопку Install.

В конце установки, на вашем компьютере запустится служба Elasticsearch, и убедиться в этом можно, перейдя по адресу localhost:9200.
windows_result

Резюме

В этой статье я показал, как устанавливать Elasticsearch 7 под разные операционные системы: Ubuntu и Windows. Так же, была рассмотрена установка, запуск и настройка Elasticsearch на Docker и Homestead Vagrant. Это была первая статья по работе с Elasticsearch, для того, чтобы в будущем показать подробные примеры по работе с ним.