Что такое Elasticsearch? Проще говоря, мы могли бы сказать, что эластичный поиск – это база данных NoSQL. Поскольку баз данных NoSQL очень много, давайте разберемся, чем Elasticsearch отличается от них.
Введение в Elasticsearch
Elasticsearch – это распределенная база данных NoSQL в реальном времени, база данных NoSQL, полнотекстовая поисковая система и мощный аналитический механизм, основанный на REST. Ниже приведены ключевые особенности Elasticsearch.
- В режиме реального времени: вставка и извлечение данных из elasticsearch выполняется очень быстро, это называется извлечением данных практически в реальном времени. Это полезно в веб-приложениях с низкой задержкой, которые имеют большой объем данных для обработки.
- На основе документов: Elasticsearch – это база данных без схемы. Он хранит документы JSON, не зная заранее схемы. Во время выполнения он может вывести из вставленных данных то, что должно быть его отображением.
- Распределенный: Elasticsearch является распределенной базой данных. Это сгруппировано. Данные распределяются по нескольким узлам, чтобы избежать единой точки отказа. Если один узел выходит из строя, он может восстановить данные с других узлов.
- База данных NoSQL: Elasticsearch – это база данных NoSql, такая как Mongo, Redis. Он поддерживает только вставку и извлечение документов JSON.
- Полнотекстовый поиск: полный текст – это расширенный способ поиска вхождения термина в документах без сканирования всего документа. Он работает путем хранения текстовых индексов для всех терминов в документе.
- Механизм аналитики: Elasticsearch предоставляет инструменты, API-интерфейсы для анализа хранимых документов. Мы можем искать популярные шаблоны, метрики, отчеты и мощные средства поддержки диаграмм данных.
- API на основе REST: Elasticsearch использует только API на основе REST для вставки и извлечения данных.
Скачать Elasticsearch
Загрузите последнюю версию установочного пакета для соответствующей платформы с сайта загрузки Elasticsearch
Процесс установки одинаков как для Linux, так и для Windows. В Windows это будет Zip-файл. В Linux это будет файл .tar.gz. Кроме того, в файле .yml убедитесь, что путь соответствует правильному синтаксису для вашей соответствующей ОС.
В Linux:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.0.tar.gz tar xvfzasticsearch-6.7.0.tar.gz
В Windows:
C:> unzip elasticsearch-6.7.0.zip Archive: elasticsearch-6.7.0.zip creating: elasticsearch-6.7.0/lib/ inflating: elasticsearch-6.7.0/lib/elasticsearch-6.7.0.jar inflating: elasticsearch-6.7.0/lib/elasticsearch-x-content-6.6.2.jar
Он извлечет все необходимые файлы JAR
creating: elasticsearch-6.7.0/logs/ creating: elasticsearch-6.7.0/plugins/
Это создаст все необходимые папки для поиска.
Ниже приведены минимальные требования для настройки эластичного поиска.
Изменить файлa elasticsearch.yml
Откройте файл конфигурации asticsearch/config/elasticsearch.yml и отредактируйте следующие параметры конфигурации
vi elasticsearch-6.7.0/config/elasticsearch.yml
# Используйте описательное имя для вашего кластера: # cluster.name: TGS_CLUSTER # Используйте описательное имя для узла: # node.name: TGS-1 # Путь к каталогу, где хранить данные # (разделяйте несколько мест запятыми): # path.data: /root/tgs/data # Путь к файлам журнала: # path.logs: /root/tgs/logs # Установите адрес привязки для определенного IP (IPv4 или IPv6): # network.host: 127.0.0.1 # Установить пользовательский порт для HTTP: # http.port: 9200
Как показано в приведенном выше примере, в файле elasticsearch.yml установите следующие значения соответствующим образом:
- Имя кластера
- Имя узла
- Путь к данным
- Путь к журналам
- Адрес привязки
- Пользовательский порт
Изменить Elasticsearch jvm.options
Чтобы настроить параметры Java, откройте файлa elasticsearch/config/jvm.options и установите выделенную память для кучи памяти.
-Xms1g -Xmx1g
- Xms представляет начальный размер общего пространства кучи
- Xmx представляет максимальный размер общего пространства кучи
Убедитесь, что в вашей системе достаточно минимального объема памяти, в противном случае Служба elasticsearch будет работать очень медленно, либо не будет работать вообще, либо через некоторое время может выдавать исключения.
Другие опции java – это расширенные опции, их редактирование без глубокого понимания может вызвать неожиданное поведение.
Запуск Elasticsearch
Выполните следующую команду в командной оболочке или командной строке Windows из каталога elasticsearch верхнего уровня
В Linux:
cd /root/elasticsearch-6.7.0 bin/elasticsearch
В Windows:
C:\elasticsearch-6.7.0> bin\elasticsearch
Будет серия журналов, но важная часть будет следующей:
[2019-05-22T18:12:23,196][INFO ][o.e.n.Node ] [TGS-1] initialized [2019-05-22T18:12:23,196][INFO ][o.e.n.Node ] [TGS-1] starting ... [2019-05-22T18:12:24,001][INFO ][o.e.t.TransportService ] [TGS-1] publish_address {127.0.0.1:9300}, bound_addresses {127.0.0.1:9300} [2019-05-22T18:13:52,437][INFO ][o.e.c.s.MasterService ] [TGS-1] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {TGS-1}{Q97KJ6A2QW2i0ehLL1nwWg} {nR6YOn0dTY-6VCn8yOrtEQ}{127.0.0.1}{127.0.0.1:9300} {ml.machine_memory=8521035776, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} [2019-05-22T18:13:52,444][INFO ][o.e.c.s.ClusterApplierService] [TGS-1] new_master {TGS-1} {Q97KJ6A2QW2i0ehLL1nwWg}{nR6YOn0dTY-6VCn8yOrtEQ}{127.0.0.1}{127.0.0.1:9300} {ml.machine_memory=8521035776, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true}, reason: apply cluster state (from master [master {TGS-1}{Q97KJ6A2QW2i0ehLL1nwWg} {nR6YOn0dTY-6VCn8yOrtEQ}{127.0.0.1}{127.0.0.1:9300} {ml.machine_memory=8521035776, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]]) [2019-05-22T18:13:52,627][INFO ][o.e.h.n.Netty4HttpServerTransport] [TGS-1] publish_address {127.0.0.1:9200}, bound_addresses {127.0.0.1:9200} [2019-05-22T18:13:52,628][INFO ][o.e.n.Node] [TGS-1] started
В приведенном выше выводе запускается TGS-1, что означает, что elasticsearch работает.
Эта настройка содержит только один узел. Это не кластер.
Проверьте установку Elasticsearch
Elasticsearch имеет основанные на REST интерфейсы управления кластером и предоставляет REST API для управления кластером. С помощью curl или веб-браузера мы можем проверить состояние кластера.
Используя команду curl:
$ curl -XGET http://127.0.0.1:9200/
Говоря о curl, вы можете найти это полезным: wget vs curl: Как скачать файлы с помощью wget и curl
Ниже приведен вывод приведенной выше команды curl:
{ "name" : "TGS-1", "cluster_name" : "TGS-CLUSTER", "cluster_uuid" : "QHwc5GpmQbuc5Tjg3OpTjA", "version" : { "number" : "6.6.2", "build_flavor" : "default", "build_type" : "zip", "build_hash" : "3bd3e59", "build_date" : "2019-03-06T15:16:26.864148Z", "build_snapshot" :* false, "lucene_version" : "7.6.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Просто введите следующую ссылку в браузере http://127.0.0.1:9200/, нажмите Enter, вы увидите тот же результат, что и выше.
Установка в Debian/Ubuntu
Установка из репозитория Debian
andreyex@ubuntu:~$ sudo apt-get install elasticsearch [sudo] password for andreyex: Reading package lists... Done Building dependency tree Reading state information... Done
Он будет извлекать пакеты deb из репозиториев и установит elasticsearch.
Выполните аналогичные шаги, описанные выше, чтобы настроить и проверить настройку elasticsearch.
Elasticsearch не запустится автоматически после установки, вам придется запускать elasticsearch вручную или зарегистрировать его в системных службах и запускать служебные команды для его выполнения.
Структура каталогов в Debian/Ubuntu будет другой.
Конфигурационные файлы:
- /etc/elasticsearch/elasticsearch.yml
- /etc/elasticsearch/jvm.options
Настройки конфигурации по умолчанию хороши, но если вы хотите изменить настройку по умолчанию, отредактируйте файлы конфигурации по соответствующим путям и перезапустите elasticsearch.