
Что такое 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.
Редактор: AndreyEx
Поделиться в соц. сетях: