Elasticsearch - это новейший поисковый движок, осуществляющей RESTful-поиск и анализ. По мере необходимости его можно масштабировать, также вы можете сразу же начать его использовать, запустив одним кликом. В этом уроке вы сумеете узнать, как скачать, установить и начать использовать Elasticsearch на Ubuntu. Все нижеописанные шаги были протестированы на таких версия операционной системы, как Ubuntu 12.04.3 x64 и Ubuntu 13.10 x64, а также весь процесс установки можно без труда повторить на VPS серверах под управлением Debian Linux.

Зависимости

В первую очередь нужно обновить список доступных пакетов, выполнив следующую команду в терминале apt-get update

Далее нужно установить среду разработки Java. Есть два варианта установки:

  • Установить среду разработки OpenJDK, поставляемую с Ubuntu.
  • Установите Elasticsearch на базе рекомендованных Java Runtime, Oracle Java.

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

OpenJDK

Для реализации первого варианта мы можем просто выполнить команду:

apt-get install openjdk-6-jre

Oracle Java

Для реализации второго варианта мы будем следовать инструкциям, приведенным в документации Elasticsearch. Для начала мы должны добавить репозиторий, содержащий Oracle Java rumtime:

sudo add-apt-repository ppa:webupd8team/java

Затем запускаем команду apt-get update, чтобы получить информацию о пакете из нового репозитория. После этого, мы можем установить Oracle Java runtime:

sudo apt-get install oracle-java7-installer

При выполнении команды необходимо принять двойную лицензию Oracle. Если вы не согласны с лицензией, можно вместо это среды установить OpenJDK runtime.

Проверьте установку Java

Проверить правильности установки Java можно следующей командой:

java -version

С зависимостями на сегодня можно покончить, так что давайте начнем с загрузки и установки Elasticsearch.

Скачать и установить

Пакеты Elasticsearch могут быть загружены непосредственно с официального сайта в форматах Zip, tar.gz, DEB, или RPM Packages. Вам не нужно делать это раньше времени, так как мы будет загружать только те файлы, которые нам необходимы, то есть будет осуществлена выборочная установка.

Установка

Учитывая параметры загрузки, предоставляемые Elasticsearch, у нас есть несколько вариантов:

  • Установка при помощи zip или tar.gz архива;
  • Установка из пакета DEB;
  • Установка из пакета rpm package;

Последний вариант не самый подходящий способ для операционных систем Ubuntu, поэтому мы его не рассматриваем.

Установка при помощи zip или tar.gz архива – это оптимальный вариант на тот случай, если вы просто хотите познакомиться с Elasticsearch. Установка с этих архивов просто делает доступными бинарные файлы для запуска Elasticsearch. Установка из пакета DEB полностью устанавливает Elasticsearch, который сразу же начинает работать на сервере. Этот процесс включает в себя установку сценариев инициализации в директорию /etc/init.d/elasticsearch, из которой начинается загрузка Elasticsearch. Если вы все еще не уверены, будете ли вы использовать Elasticsearch, я предлагаю установку из zip или tar.gz архива. Таким образом Elasticsearch будет присутствовать при запуске на сервере по вашему желанию.

Установка из zip или tar.gz архива

Обе загрузки, zip и tar.gz, содержат в себе предварительно скомпилированные двоичные файлы для Elasticsearch.

Для начала скачайте архив в любую директорию. После извлечения архива вы будете иметь возможность запускать исполняемые файлы непосредственно из этого каталога, поэтому вы должны поместить их туда, где они будут доступны любому пользователю, включая вас. Если, конечно, вы хотите иметь доступ к Elasticsearch. В этом уроке мы просто скачиваем архив в каталог нашего текущего пользователя. Если вы загружаете их в /tmp, то они, вероятно, исчезнут при перезагрузке VPS. Если вас это устраивает, то можете оставить архивы в папке Загрузок. Вы можете создать новый временный каталог в /tmp для быстрого запуска командой:

mktemp -d

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

Скачать архив

Запустите его так:

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.zip

либо так:

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.tar.gz

Первая команда загружает архив ZIP, а вторая команда загружает архив tar.gz. Если вы загрузили zip пакет, убедитесь, что вы заранее его распаковали:

apt-get install unzip 

Затем нужно запустить:

unzip elasticsearch-0.90.7.zip

Если вы скачали архив tar.gz, запустите команду:

tar -xf elasticsearch-0.90.7.tar.gz

Любая из этих инструкций создаст каталог elasticsearch-0.90.7. Перейдите в этот каталог, введя:

cd elasticsearch-0.90.7

и там вам нужно будет найти бинарные файлы в папке bin.

Установка из Debian software package

Лучшим вариантом для загрузки в операционной системе Ubuntu является пакет deb. RPM, конечно, тоже может работать, но для этого он должен быть преобразован. Поэтому мы не будем рассматривать это в данном уроке. Возьмите пакет DEB и запустите командой:

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.deb

Установка непосредственно из пакета Debian выполняется так:

dpkg -i elasticsearch-0.90.7.deb

В результате приложение Elasticsearch будет корректно установлено в каталог /usr/share/elasticsearch. Напомним, что установка из пакета Debian также устанавливает сценарий в каталог /etc/init.d/elasticsearch, что добавляет Elasticsearch в папку с автозагрузкой при старте компьютера. На сервере также он будет доступен сразу же после установки.

Конфигурационные файлы

При установке из архива zip или tar.gz следует учесть, что конфигурационные файлы находятся в папке config конечного каталога. При установке из пакета Debain, конфигурационные файлы находятся в каталоге /etc/elasticsearch.

В любом случае, там будет два основных файла конфигурации: elasticsearch.yml и logging.yml. Первый настраивает параметры сервера Elasticsearch, а последний, как ни странно, - это настройки регистратора, используемые Elasticsearch.

  • "Elasticsearch.yml", по умолчанию, не содержат ничего, кроме комментариев.
  • "Logging.yml" является конфигурацией для основной регистрации. Вы можете найти логи результата установки в каталоге /var/log/elasticsearch.

Запрет на публичный доступ к Elasticsearch

Прежде чем продолжить, нужно сделать так, чтобы настройки Elasticsearch перестали быть доступными для пользователей сети. Дело в том, что Elasticsearch не имеет встроенных инструментов безопасности и может управляться теми, кто получит доступ к HTTP API. Это может быть сделано путем редактирования elasticsearch.yml. Если вы удачно справились с установкой пакета, то вам удастся открыть настройки с помощью команды:

sudo vi /etc/elasticsearch/elasticsearch.yml

Затем найдите строку, задающую network.bind_host, и измените значение на «локальный», это выглядит следующим образом:

network.bind_host: localhost

Затем вставьте следующую строку в файл, чтобы отключить динамические сценарии:

script.disable_dynamic: true

Сохранить и выйти. Теперь перезагрузите Elasticsearch, чтобы все изменения вступили в силу. Воспользуйтесь следующей командой:

sudo service elasticsearch restart

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

Проверка установки Elasticsearch

Неважно, были ли файлы извлечены из zip или tar.gz архива в каталог или установлены из пакета Debian, в любом случае, если ваши двоичные файлы Elasticsearch доступны, то можно запустить сервер. Если вы использовали zip или tar.gz архивов, убедитесь, что вы находитесь в конечном каталоге. Если вы установили с помощью пакета Debian, то сервер Elasticsearch уже должен быть запущен.

Давайте убедимся, что все работает. Запустите команду:

./bin/elasticsearch

Elasticsearch должен быть запущен на порту 9200. Обратите внимание, что движку Elasticsearch нужно некоторое время для запуска, так что, выполнив команду раньше загрузки, у вам может ничего не выйти. В целом, на выполнение команды требуется не более 10 секунд, и если она не срабатывает, то скорее всего что-то не так.

Убедитесь, что сервер запущен, выполнив:

curl -X GET 'http://localhost:9200'

Вы должны увидеть следующий ответ:

{
"ok" : true,
"status" : 200,
"name" : "Xavin",
"version" : {
"number" : "0.90.7",
"build_hash" : "36897d07dadcb70886db7f149e645ed3d44eb5f2",
"build_timestamp" : "2013-11-13T12:06:54Z",
"build_snapshot" : false,
"lucene_version" : "4.5.1"
},
"tagline" : "You Know, for Search"
}

Если вы видите вышеописанные строки, то можно сделать вывод, что Elasticsearch работает должным образом. Кроме того, вы можете запросить ваш установку Elasticsearch из браузера по адресу: 9200. Вы должны увидеть тот же JSON, как вы видели при использовании команды curl выше.

Если установка проводилась из zip или tar.gz архива, сервер может быть остановлен с помощью RESTful API следующим образом:

curl -X POST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'

Команда выше сработает также и тогда, когда Elasticsearch был установлен с помощью пакета Debian, но вы также можете остановить сервер с помощью service elasticsearch stop, а перезапустить сервер сумеете при помощи service elasticsearch start.

Использование Elasticsearch

Elasticsearch запущен и работает. Теперь мы пройдемся по основным настройкам и функциям.

Базовая конфигурация

При установке с zip или tar.gz архивов файлы конфигурации находятся в соответствующей папке каталога установки. При установке с помощью пакета Debian файлы конфигурации могут быть найдены в /etc/elasticsearch/. Вы найдете два файла: elasticsearch.yml и logging.yml. Первый – это общая конфигурация Elasticsearch. Текущие настройки используются по умолчанию, при условии, что файл содержит только комментарии.

Установка "cluster.name" является методом, при котором для Elasticsearch обеспечивается автоматическое обнаружение. Это означает, что если группа серверов с Elasticsearch могут обнаружить друг друга. Это очень простой способ масштабировать Elasticsearch.

Основы использования

Давайте добавим данных в нашу установку Elasticsearch. Elasticsearch использует RESTful API, который реагирует на все команды управления CRUD: создание, чтение, обновление, и удаление.

Добавьте запись:

curl -X POST 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Вы должны увидеть следующий ответ:

{"ok":true,"index":"tutorial","type":"helloworld","id":"1","version":1}

Мы отправили запрос HTTP POST на сервер Elasticserach. URI запроса был /tutorial/helloworld/1. Важно понимать следующее:

  • "Tutorial" – это индекс данных в Elasticsearch;
  • "HelloWorld" является типом данных;
  • "1" является идентификатором нашего входа с указанными выше индексом и типом;

Если бы вы увидели вышеописанный ответ, то теперь можете запросить данные с:

curl -X GET 'http://localhost:9200/tutorial/helloworld/1'

Команда должна дать следующий ответ:

{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"exists":true, "_source" : { "message": "Hello World!" }}

Успех! Мы добавили и запросили данные в Elasticsearch.

Еще одни момент, который можно добавить к запросу – это ?pretty=true. Давайте пробовать:

curl -X GET 'http://localhost:9200/tutorial/helloworld/1?pretty=true'

Команда должна ответить:

{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 1,
"exists" : true, "_source" : { "message": "Hello World!" }
}

Этот ответ очевидно более читабельный. Кроме того, его можно легко напечатать без необходимости добавлять строку запроса, если вы пропишите format=yaml в файле конфигурации Elasticsearch.

Вывод

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

Оригинальная статья: How To Install Elasticsearch on an Ubuntu VPS
Перевод: Карпенко София

Add new comment

Image CAPTCHA
Enter the characters shown in the image.