Что такое Elasticsearch? Проще говоря, мы могли бы сказать, что эластичный поиск – это база данных NoSQL. Поскольку баз данных NoSQL очень много, давайте разберемся, чем Elasticsearch отличается от них.

 

Введение в Elasticsearch

Elasticsearch – это распределенная база данных NoSQL в реальном времени, база данных NoSQL, полнотекстовая поисковая система и мощный аналитический механизм, основанный на REST. Ниже приведены ключевые особенности Elasticsearch.

  1. В режиме реального времени: вставка и извлечение данных из elasticsearch выполняется очень быстро, это называется извлечением данных практически в реальном времени. Это полезно в веб-приложениях с низкой задержкой, которые имеют большой объем данных для обработки.
  2. На основе документов: Elasticsearch – это база данных без схемы. Он хранит документы JSON, не зная заранее схемы. Во время выполнения он может вывести из вставленных данных то, что должно быть его отображением.
  3. Распределенный: Elasticsearch является распределенной базой данных. Это сгруппировано. Данные распределяются по нескольким узлам, чтобы избежать единой точки отказа. Если один узел выходит из строя, он может восстановить данные с других узлов.
  4. База данных NoSQL: Elasticsearch – это база данных NoSql, такая как Mongo, Redis. Он поддерживает только вставку и извлечение документов JSON.
  5. Полнотекстовый поиск: полный текст – это расширенный способ поиска вхождения термина в документах без сканирования всего документа. Он работает путем хранения текстовых индексов для всех терминов в документе.
  6. Механизм аналитики: Elasticsearch предоставляет инструменты, API-интерфейсы для анализа хранимых документов. Мы можем искать популярные шаблоны, метрики, отчеты и мощные средства поддержки диаграмм данных.
  7. 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> binelasticsearch

 

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

[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.

Источник: AndreyEx.ru