Как установить elasticsearch на windows

Обновлено: 03.07.2024

В этом разделе мы будем устанавливать Elasticsearch на локальном компьютере в виде одноузлового кластера. Как только мы начнем работу с кластером, мы научимся использовать API-интерфейсы для проверки работоспособности узлов. Разберем как установить в Windows, Mac OS и Debian / RPM .

Установка Java

Если у вас нет установленной Java или у вас установлена ​​более старая версия, следуйте инструкциям по следующей ссылке:

Пожалуйста, примите лицензионное соглашение и загрузите JDK в выборе формата вашего пакета. После того, как вы установили Java, проверьте версию Java с помощью этой java -version команды. Так же убедитесь что JAVA_HOME переменная среды установлена:

Elasticsearch 5.5.1 zip можно загрузить с тут:

После того, как вы загрузили ZIP-архив, распакуйте ZIP-архив в выбранный вами каталог.

Запуск и остановка Elasticsearch

Вы можете запустить Elasticsearch, используя двоичные скрипты в папке bin . Чтобы запустить экземпляр Elasticsearch, выполните следующие команды:

Mac OS X

Давайте загрузим последнюю версию Elasticsearch в tar.gz формате, выполнив следующую команду в вашем терминале:

После загрузки распакуйте в каталок по вашему усмотрению.

Запуск и остановка Elasticsearch

Вы можете запустить Elasticsearch, используя двоичные скрипты в папке bin . Чтобы запустить экземпляр Elasticsearch, выполните следующие команды:

Если Elasticsearch запущен успешно, вы увидите примерно тоже что в низу:

Остановить можно нажав Ctrl + C . Если все хорошо вы увидите примерно следующее:

Пакеты DEB и RPM

Вы также можете установить Elasticsearch с помощью пакета Debian или RPM ( Red Hat Package Manager ). При установке с использованием пакетов DEB или RPM Elasticsearch будет установлен в /usr/share/elasticsearch . Обратите внимание, что структура каталогов отличается при установке с использованием пакета Debian или RPM по сравнению с файлом zip / tar.

Пакет Debian

Для операционной системы на базе Debian, такой как Ubuntu, вы можете загрузить пакет Debian непосредственно с веб-сайта Elasticsearch, используя следующую ссылку:

При использовании пакета Debian Elasticsearch будет установлен как служба. Про запуск и остановку будет чуть ниже.

Пакет RPM

Для операционных систем на базе RPM, таких как Centos и Red Hat, вы можете загрузить пакет RPM непосредственно с веб-сайта Elasticsearch, используя следующую ссылку:

После загрузки пакета вы можете установить Elasticsearch, используя следующую команду:

При использовании пакета RPM Elasticsearch будет установлен как служба.

Запуск и остановка Elasticsearch

Если вы устанавливаете Elasticsearch с помощью пакета Debian или RPM, вы можете запустить / остановить Elasticsearch с помощью команд управления сервисами.

Вы можете проверить log файл, чтобы убедиться, что Elasticsearch запущен / остановлен успешно.

Примеры файлов конфигурации

Если вы устанавливаете Elasticsearch, используя zip или .tar.gz , elasticsearch.yml файл находится в каталоге в основной папке elasticsearch-5.5.1 . Если вы устанавливаете Elasticsearch с использованием DEB / RPM, он по умолчанию находится в папке /etc/elasticsearch .

Если у вас пока только один узел, вам нужно установить имя кластера, имя узла и IP-адрес, к которому должен привязываться Elasticsearch. Если IP-адрес не указан, он будет привязан к localhost:

Если вы хотите настроить несколько узлов, наряду с вышеупомянутыми свойствами, вы также должны указать IP-адрес других узлов в кластере, чтобы они могли обнаружить друг друга.

Ниже приведена конфигурация для node1 :

Ниже приведена конфигурация для node2 :

Заметка

Проверка Elasticsearch

Из ответа JSON вы можете видеть, что имя узла A_TmR2p кластера elasticsearch , наряду с несколькими другими деталями. По умолчанию Elasticsearch назначает случайное имя ( A_TmR2p ) узлу при запуске.

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

Установка Elasticsearch на Linux/Ubuntu

Для того, чтобы установить Elasticsearch на Ubuntu, нужно открыть страницу их офф.документации.

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

Для работы Elasticsearch на Linux, нужно сначала установить Java 8 версии, или более новую. Для этого, выполните код:

java_result

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

После чего, приступим к установке самого Elasticsearch.
Сначала нужно выполнить:

В результате чего, эта команда должна вернуть ответ: OK .

Этой командой мы установим ElasticSearch 7 версии. Если вам нужна какая-то конкретная версия, или более старая версия, то измените версию на нужную, вместо 7.x

После чего, выполним следующие команды:

После выполнения этих команд, Elasticsearch будет установлен. Однако, он не запустится сразу после установки, запустить его придётся вручную, выполнив:

curl_result

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

Если эта ошибка не пропадает, то это означает, что сервис не удаётся запустить. Вероятно, это из-за недостатка оперативной памяти. Для того, чтобы посмотреть подробный лог Elasticsearch, можете выполнить команду: sudo journalctl -u elasticsearch

Но, уверен, что у вас всё запустилось, мои поздравления!

Настройка Elasticsearch

Если вам интересно, в какой директории Elasticsearch хранит данные, то они находятся в директории /var/lib/elasticsearch , конфигурационные данные в /etc/elasticsearch , а настройки Java для Elasticsearch расположены в файле /etc/default/elasticsearch .

По умолчанию Elasticsearch настроен только для локального доступа, для доступа только изнутри текущей системы, в которую он установлен. Вы не можете достучаться к нему удалённо. И, если клиент подключаемый к Elasticsearch запущен на том же сервере, что и сам Elasticsearch, вам не нужно менять конфигурационные файлы. Если это не так, то есть опция настройки удалённого доступа к Elasticsearch.

Удалённый доступ

В Ubuntu стандартно установлено ПО по настройке файрвол UFW. По умолчанию, UFW установлен в систему, но не включён. Но, перед его включением, добавим одно правило для разрешения входящего трафика по SSH:

Теперь, разрешим удалённый доступ для доверенного IP адреса:

Вместо 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:

И последнее, проверим статус файрвола:

firewall

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

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

Для этого, откроем конфигурационный файл elasticsearch.yml :

Для того, чтобы выйти из редактирования файла в редакторе nano , нужно нажать CTRL+C , напечатав символ согласия y .

Теперь, перезагрузим Elastisearch, чтобы изменения вступили в силу:

И это всё. Теперь у вас есть возможность подключения к Elastisearch удалённо.

В этом пункте было показано, как установить Elasticsearch в Ubuntu 18.10. Теперь вы можете посетить офф.документацию для начала работы и более детального изучения основ работы с Elasticsearch.

Установка ElasticSearch в Docker

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

Теперь, когда скачивание дойдёт до конца, его можно запустить командой:

docker-postman-result

В результате чего, Elasticsearch станет доступен по адресу localhost:9200.

Установка Elasticsearch в Vagrant

Для того, чтобы установить Elasticsearch в Vagrant (Homestead) нужно добавить опцию elasticsearch в файле Homestead.yaml , указав нужную поддерживаемую версию. При создании виртуальной машины, по умолчанию, будет создан кластер под названием homestead .

Вы не должны предоставлять Elasticsearch больше, чем половина вашей доступной оперативной памяти, потому, убедитесь, что ваш Homestead настроен в соответствии этому замечанию.

vagrant_curl_result

Для того, чтобы прокинуть порты для удалённого доступа, нужно дополнить Homestead.yaml:

И, аналогично, как описывалось в секции настройки удалённого доступа, нужно прописать в файл /etc/elasticsearch/elasticsearch.yml новые параметры, разрешив удалённый доступ.

После чего, удалённый доступ заработает. Учтите, что в этом случае, доступ к Elasticsearch будет осуществляться не по адресу localhost:9200, а по параметру IP, указанному в Homestead.yml. В моём случае, это 192.168.10.10:9200.

Установка Elasticsearch на Windows 10

windows_loader_msi

Для установки Elasticsearch на Windows, перейдите на страницу и выберите нужную версия для скачивания (я предпочитаю *.msi версию).

dinwos_dirs

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

windows_as_service

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

windows_common

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

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

windows_result

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

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

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Как установить и настроить Elasticsearch в Linux и Windows

(1 оценок, среднее: 5,00 из 5)

Как установить и настроить Elasticsearch в Linux и Windows

Введение в Elasticsearch

Загрузите последнюю версию установочного пакета для соответствующей платформы с сайта загрузки Elasticsearch

Процесс установки одинаков как для Linux, так и для Windows. В Windows это будет Zip-файл. В Linux это будет файл .tar.gz. Кроме того, в файле .yml убедитесь, что путь соответствует правильному синтаксису для вашей соответствующей ОС.

Он извлечет все необходимые файлы JAR

Это создаст все необходимые папки для поиска.

Ниже приведены минимальные требования для настройки эластичного поиска.

Изменить файлa elasticsearch.yml

Откройте файл конфигурации asticsearch/config/elasticsearch.yml и отредактируйте следующие параметры конфигурации

Как показано в приведенном выше примере, в файле elasticsearch.yml установите следующие значения соответствующим образом:

  • Имя кластера
  • Имя узла
  • Путь к данным
  • Путь к журналам
  • Адрес привязки
  • Пользовательский порт

Изменить Elasticsearch jvm.options

Чтобы настроить параметры Java, откройте файлa elasticsearch/config/jvm.options и установите выделенную память для кучи памяти.

  • Xms представляет начальный размер общего пространства кучи
  • Xmx представляет максимальный размер общего пространства кучи

Убедитесь, что в вашей системе достаточно минимального объема памяти, в противном случае Служба elasticsearch будет работать очень медленно, либо не будет работать вообще, либо через некоторое время может выдавать исключения.

Запуск Elasticsearch

Выполните следующую команду в командной оболочке или командной строке Windows из каталога elasticsearch верхнего уровня

Будет серия журналов, но важная часть будет следующей:

В приведенном выше выводе запускается TGS-1, что означает, что elasticsearch работает.

Эта настройка содержит только один узел. Это не кластер.

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

Elasticsearch имеет основанные на REST интерфейсы управления кластером и предоставляет REST API для управления кластером. С помощью curl или веб-браузера мы можем проверить состояние кластера.

Говоря о curl, вы можете найти это полезным: wget vs curl: Как скачать файлы с помощью wget и curl

Ниже приведен вывод приведенной выше команды curl:

Установка в Debian/Ubuntu

Установка из репозитория Debian

Он будет извлекать пакеты deb из репозиториев и установит elasticsearch.

Выполните аналогичные шаги, описанные выше, чтобы настроить и проверить настройку elasticsearch.

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

Структура каталогов в Debian/Ubuntu будет другой.

  • /etc/elasticsearch/elasticsearch.yml
  • /etc/elasticsearch/jvm.options

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Elasticsearch

Доступ к ElasticSearch в Python

Если быть честным, то REST API ES достаточно хорош, чтобы вы могли использовать библиотеку запросов для выполнения всех ваших задач. Тем не менее, вы также можете использовать библиотеку Python для ElasticSearch, чтобы в дальнейшем не беспокоиться о том, как создавать те или иные запросы, а сосредоточиться на работе. Библиотеку Python вы можете установить через pip, после чего вам останется получить к ней доступ в своих Python программах. pip install elasticsearch Чтобы убедиться, что библиотека установлена правильно, запустите следующее в вашей командной строке:

Web Scraping и Elasticsearch

Web Scraping (парсинг контента или парсинга сайтов). Теперь давайте рассмотрим небольшой пример использования Elasticsearch на практике. Наша цель состоит в том, чтобы получить доступ к онлайн-рецептам с сайта и сохранить их в Elasticsearch для проведения дальнейшего поиска и аналитики. Сначала мы очистим данные от всех рецептов, так как все рецепты нам не нужны, и сохраним. Также мы создадим схему, с помощью которой мы убедимся, что наши данные индексируются в правильном формате и типе данных. Затем я просто выбираю рецепты салатов и сохраняю полный список себе.

Полученный контент

Таким образом, это основная программа, которая может парсить данные. Так как нам нужны данные в формате JSON — мне пришлось дополнительно их преобразовать.

Создаем индексы

Окей, мы с вами получили нужные данные и теперь должны их где-то хранить. Самое первое, что нам нужно сделать, это создать индекс. Назовем его recipes. Тип (type) будет называться salads. Далее нам нужно создать мэппинг нашей структуры документа.

Прежде чем создавать индекс, подключитесь к серверу Elasticsearch.

_es.ping() фактически пингует сервер и выводит в консоль True, если удалось совершить подключение. Мне потребовалось некоторое время, чтобы выяснить как поймать стек-трейс, в итоге выяснилось, что он просто регистрируется.

На верхнем скриншоте много чего происходит. Во-первых, мы передали конфигурационную переменную, которая отображает всю структуры документа. Мэппинг -это термин в Elasticsearch, обозначающий микроразметку. Подобно тому, как мы устанавливаем определенный тип данных поля в таблицах, мы делаем что-то похожее и здесь. Но чтобы лучше во всем этом разобраться — читайте официальную документацию. Все поля имеют тип text, но у calories тип integer.

Передавая dynamic:strict, мы заставляем Elasticsearch выполнять строгую проверку любого входящего документа. Здесь salads является типомdocument. Тип (type) в Elasticsearch это ответ на таблицы в RDBMS.

Документация индексов

Следующим шагом является хранение фактических данных или документов.

Запускаем и вот что мы увидим:

Знаете, почему это происходит? Так как мы не добавляли в наш мэппинг компонентов, ES решил не разрешать нам хранить документ, не содержащий, по сути, ничего. Если вы не назначите компоненты мэппингу — произойдет повреждение данных. Теперь давайте немного подправим наш мэппинг и посмотрим, что произойдет:

Мы добавили ingredients типу nested, а затем назначили тип данных внутреннему полю. В нашем случае это text.

Вложенный тип данных (nested) позволяет установить тип вложенных объектов JSON. Запустите снова и взгляните на результат:

Так как вы не передали _id вообще, ES сам назначил динамический идентификатор сохраненному документу. Я использую браузер Chrome и ES data viewer с помощью инструмента Elasticsearch Toolbox для просмотра данных.


Прежде чем двигаться дальше, отправим строку в поле calories и посмотрим, как развернутся события. Вспомним тот факт, что мы присвоили ему тип integer. Учитывая это, при индексировании он выдаст следующую ошибку:

TransportError(400, ‘mapper_parsing_exception’, ‘failed to parse [calories]’)

Итак, теперь вы знаете преимущества назначения мэппинга для ваших документов. Если вы этого не сделаете, все равно все будет работать, поскольку Elasticsearch назначит свой собственный мэппинг во время среды выполнения.

Запрос записей

Теперь, когда записи индексируются, пришло время их запросить, в соответствии с нашими потребностями. Я собираюсь создать функцию и назвать ее search(). Она будет выводить на экран результаты наших запросов:

Все предельно просто. Вы передаете индекс и критерии поиска в него. Попробуем задать несколько запросов:

В приведенном выше запросе вернутся все записи, в которых calories равны 102. В нашем случае вывод будет:

А что делать, если вы хотите получить записи, в которых calories больше, чем 20?

Вы также можете указать, какие столбцы или поля вам хотелось бы вернуть. Приведенный выше запрос вернет все записи, в которых calories больше, чем 20. Кроме того, он будет отображать поле title только под _source.

Заключение

Elasticsearch — это мощный инструмент, который поможет сделать уже существующие или грядущие приложения доступными для поиска, предоставляя надежные функции для возврата наиболее точного набора результатов. Читайте официальные документы, мануалы и инструкции. Позвольте Elasticsearch упростить вашу жизнь. По традиции, весь код доступен на Github.

Читайте также: