Поиск по сайту:

Как установить Elasticsearch на Ubuntu VPS


Статус: устарело

В этой статье рассматривается версия Ubuntu, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:

  • Обновите Ubuntu до версии 14.04.
  • Обновление Ubuntu 14.04 до Ubuntu 16.04
  • Перенесите данные сервера в поддерживаемую версию.

Причина:

Смотрите вместо этого:

Elasticsearch — это платформа для распределенного поиска и анализа RESTful. Его можно масштабировать по мере необходимости, и вы можете сразу начать использовать его в одном дроплете DigitalOcean. В этом руководстве мы скачаем, установим и начнем использовать Elasticsearch в Ubuntu. Предоставленные шаги в настоящее время были протестированы на: Ubuntu 12.04.3 x64 и Ubuntu 13.10 x64.

Зависимости

Сначала обновите список доступных пакетов, запустив apt-get update.

Далее мы должны установить среду выполнения Java. Здесь есть два варианта.

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

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

OpenJDK

Чтобы выполнить первый вариант, мы можем просто запустить apt-get install openjdk-6-jre.

Oracle Java

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

sudo add-apt-repository ppa:webupd8team/java

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

sudo apt-get install oracle-java7-installer

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

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

Затем вы можете проверить, установлена ли Java, запустив java -version.

Это все зависимости, которые нам нужны на данный момент, поэтому давайте начнем с получения и установки Elasticsearch.

Загрузить и установить

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

Установить

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

  • Установить из архива zip или tar.gz.
  • Установить из пакета deb.
  • Установить из пакета rpm.

Этот последний вариант не подходит для 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

Лучшим пакетом для загрузки для 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, затем раскомментируйте ее и измените значение на localhost, чтобы оно выглядело следующим образом:

network.bind_host: localhost

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

script.disable_dynamic: true

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

sudo service elasticsearch restart

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

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

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

Убедимся, что все работает. Бегать

 ./bin/elasticsearch

Теперь Elasticsearch должен работать на порту 9200. Обратите внимание, что для полного запуска Elasticsearch требуется некоторое время, поэтому немедленный запуск команды curl ниже может привести к сбою. Ответ не должен занимать более десяти секунд, поэтому, если приведенная ниже команда не работает, вероятно, что-то еще не так.

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

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. Вы можете перезапустить сервер с помощью соответствующего сервиса elasticsearch start.

Использование эластичного поиска

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

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

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

Параметр «cluster.name» — это метод, с помощью которого Elasticsearch обеспечивает автоматическое обнаружение. Это означает, что если группа серверов Elasticsearch в одной сети использует одно и то же имя кластера, они автоматически обнаружат друг друга. Вот как просто масштабировать Elasticsearch, но имейте в виду, что если вы сохраните имя кластера по умолчанию и в вашей сети есть другие серверы Elasticsearch, которые не находятся под вашим контролем, вы, вероятно, окажетесь в плохом состоянии.

Основное использование

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

Чтобы добавить запись

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, теперь мы можем запросить данные с помощью

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. Поскольку он отвечает на базовый RESTful API. Теперь легко начать добавлять и запрашивать данные с помощью Elasticsearch из вашего приложения.

Прислано: ckendell