База данных Elasticsearch
Elasticsearch - одна из самых популярных баз данных NoSQL, которая используется для хранения и поиска текстовых данных. Он основан на технологии индексирования Lucene и позволяет выполнять поиск в миллисекундах на основе данных, которые проиндексированы.
Вот определение на основе веб-сайта Elasticsearch:
Elasticsearch - это распределенная система поиска и аналитики RESTful с открытым исходным кодом, способная решать все большее количество сценариев использования.
Это были высокоуровневые слова об Elasticsearch. Давайте разберемся с концепциями подробно здесь.
- Распространено: Elasticsearch разделяет данные, которые он содержит, на несколько узлов и использует господин-раб внутренний алгоритм
- ОТДЫХ: Elasticsearch поддерживает запросы к базе данных через REST API. Это означает, что мы можем использовать простые HTTP-вызовы и использовать HTTP-методы, такие как GET, POST, PUT, DELETE и т. Д. для доступа к данным.
- Поисковая и аналитическая система: ES поддерживает высокоаналитические запросы для запуска в системе, которые могут состоять из агрегированных запросов и нескольких типов, таких как структурированные, неструктурированные и географические запросы.
- Горизонтально масштабируемый: Этот вид проверки относится к добавлению дополнительных машин в существующий кластер. Это означает, что ES может принимать больше узлов в своем кластере и не предоставлять время простоя для необходимых обновлений системы. Посмотрите на изображение ниже, чтобы понять концепции масштабирования:
Вертикальный и горизонтальный ход
Начало работы с базой данных Elasticsearch
Чтобы начать использовать Elasticsearch, он должен быть установлен на машине. Для этого прочтите «Установить ElasticSearch на Ubuntu».
Убедитесь, что у вас активна установка ElasticSearch, если вы хотите попробовать примеры, которые мы представим позже в уроке.
Elasticsearch: концепции и компоненты
В этом разделе мы увидим, какие компоненты и концепции лежат в основе Elasticsearch. Понимание этих концепций важно для понимания того, как работает ES:
- Кластер: Кластер - это набор серверных машин (узлов), на которых хранятся данные. Данные разделены между несколькими узлами, чтобы их можно было реплицировать, и единственная точка отказа (SPoF) не возникает с ES-сервером. Имя кластера по умолчанию: эластичный поиск. Каждый узел в кластере подключается к кластеру с помощью URL-адреса и имени кластера, поэтому важно, чтобы это имя было четким и понятным.
- Узел: Узловая машина является частью сервера и называется отдельной машиной. Он хранит данные и предоставляет возможности индексации и поиска, а также другие узлы кластера.
Благодаря концепции горизонтального масштабирования мы можем виртуально добавить бесконечное количество узлов в кластер ES, чтобы дать ему гораздо больше возможностей и возможностей индексирования.
- Индекс: Указатель - это набор документов с похожими характеристиками. Индекс очень похож на базу данных в среде на основе SQL.
- Тип: Тип используется для разделения данных между одним и тем же индексом. Например, база данных / индекс клиентов может иметь несколько типов, например user, payment_type и т. Д.
Обратите внимание, что типы не рекомендуются из ES v6.0.0 и далее. Прочтите здесь, почему это было сделано.
- Документ: Документ - это нижний уровень единицы, представляющей данные. Представьте, что это объект JSON, содержащий ваши данные. Можно проиндексировать любое количество документов внутри индекса.
Типы поиска в Elasticsearch
Elasticsearch известен своими возможностями поиска в режиме, близком к реальному времени, и гибкостью, которую он предоставляет с типом индексируемых и просматриваемых данных. Начнем изучать, как пользоваться поиском по разным типам данных.
- Структурированный поиск: этот тип поиска выполняется по данным, имеющим предопределенный формат, например даты, время и числа. С предопределенным форматом появляется гибкость выполнения общих операций, таких как сравнение значений в диапазоне дат. что интересно, текстовые данные тоже могут быть структурированы. Это может произойти, если поле имеет фиксированное количество значений. Например, имя базы данных может быть MySQL, MongoDB, Elasticsearch, Neo4J и т. Д. При структурированном поиске ответ на запросы, которые мы выполняем, будет либо да, либо нет.
- Полнотекстовый поиск: этот тип поиска зависит от двух важных факторов, Актуальность а также Анализ. С помощью Relevance мы определяем, насколько хорошо некоторые данные соответствуют запросу, определяя оценку для результирующих документов. Эта оценка предоставлена самой ES. Анализ относится к разбиению текста на нормализованные токены для создания инвертированного индекса.
- Многополевой поиск: количество аналитических запросов к хранимым в ES данным постоянно растет, поэтому мы обычно не сталкиваемся с простыми запросами на сопоставление. Требования выросли для выполнения запросов, которые охватывают несколько полей и имеют отсортированный по баллам список данных, возвращаемых нам самой базой данных. Таким образом, данные могут быть представлены конечному пользователю гораздо более эффективно.
- Сопоставление с приоритетом: запросы сегодня - это гораздо больше, чем просто определение того, содержат ли некоторые текстовые данные другую строку или нет. Речь идет об установлении связи между данными, чтобы их можно было оценить и сопоставить с контекстом, в котором сопоставляются данные. Например:
- Мяч попал в Джона
- Джон ударил по мячу
- Джон купил новый мяч, который попал в сад Хаэн
Запрос на совпадение найдет все три документа при поиске Удар по мячу. Поиск по близости может сказать нам, как далеко эти два слова появляются в одной строке или абзаце, из-за чего они совпадают.
- Частичное сопоставление: часто нам нужно выполнять запросы с частичным сопоставлением. Частичное соответствие позволяет нам запускать запросы, которые частично соответствуют. Чтобы визуализировать это, давайте посмотрим на аналогичные запросы на основе SQL:
SQL-запросы: частичное соответствие
ГДЕ имя КАК "% john%"
И назовите КАК "% red%"
И назовите КАК "% garden%"В некоторых случаях нам нужно выполнять только запросы частичного совпадения, даже если их можно рассматривать как методы грубой силы.
Интеграция с Kibana
Когда дело доходит до механизма аналитики, нам обычно требуется выполнять аналитические запросы в домене бизнес-аналитики (BI). Когда дело доходит до бизнес-аналитиков или аналитиков данных, было бы несправедливо предполагать, что люди знают язык программирования, когда они хотят визуализировать данные, представленные в ES Cluster. Эту проблему решает Кибана. Kibana предлагает так много преимуществ для бизнес-аналитики, что люди могут визуализировать данные с помощью отличной настраиваемой панели инструментов и интерактивно просматривать данные. Давайте посмотрим на некоторые из его преимуществ здесь.
Интерактивные диаграммы
В основе Kibana лежат такие интерактивные диаграммы:
Kibana поддерживает различные типы диаграмм, такие как круговые диаграммы, солнечные лучи, гистограммы и многое другое, в которых используются все возможности агрегирования ES.
Поддержка картографии
Kibana также поддерживает полную гео-агрегацию, которая позволяет нам геокартировать наши данные. Разве это не круто?!
Предварительно созданные агрегаты и фильтры
С предварительно созданными агрегациями и фильтрами можно буквально фрагментировать, отбрасывать и запускать оптимизированные запросы на панели инструментов Kibana. Всего несколькими щелчками мыши можно запускать агрегированные запросы и представлять результаты в виде интерактивных диаграмм.
Простое распространение информационных панелей
С Kibana также очень легко делиться дашбордами с гораздо более широкой аудиторией без каких-либо изменений дашборда с помощью режима Dashboard Only. Мы можем легко вставлять информационные панели в нашу внутреннюю вики или веб-страницы.
Особые изображения взяты со страницы продукта Kibana.
Использование Elasticsearch
Чтобы просмотреть сведения об экземпляре и информацию о кластере, выполните следующую команду:
Теперь мы можем попробовать вставить некоторые данные в ES, используя следующую команду:
Вставка данных
завиток \-X POST 'http: // localhost: 9200 / linuxhint / hello / 1' \
-H 'Content-Type: application / json' \
-d '"name": "LinuxHint"' \
Вот что мы получаем с помощью этой команды:
Попробуем сейчас получить данные:
Получение данных
curl -X GET 'http: // localhost: 9200 / linuxhint / hello / 1'Когда мы запускаем эту команду, мы получаем следующий вывод:
Заключение
В этом уроке мы рассмотрели, как начать использовать ElasticSearch, который является отличным механизмом аналитики и обеспечивает отличную поддержку для поиска по произвольному тексту почти в реальном времени.