Что такое Elasticsearch
Elasticsearch - это поисковая система с открытым исходным кодом, реализована на базе библиотеки Apache Lucene (https://lucene.apache.org/core/). Apache Lucene является одной из самой передовой системой поиска с открытым исходным кодом на данный момент. Она представляет собой набор библиотек для работы с полнотекстовым поиском.
Elasticsearch - помогает реализовывать всю мощь Apache Lucene простыми средствами и механизмами.
Elasticsearch - реализует больший функционал, чем Apache Lucene. Про Elasticsearch можно сказать, что он является:
- Механизмом хранения документов (аналог таблиц базы данных, на подобие MySQL) в реальном времени, где каждое поле индексируется и является поисковым.
- Системой поиска и аналитики в реальном времени.
- Масштабируемой системой.
Все это упаковано в один сервер, с которым можно общаться при помощи RESTful API. Передача и получение данных в Elasticsearch производится при помощи JSON. Для Java есть своя библиотека но, мы ее не будем рассматривать.
Установка Elasticsearch
Качаем/Обновляем последнюю версию Java.
Заходим на сайт https://www.elastic.co/downloads/elasticsearch
Качаем архив, распаковываем, заходим в папку и запускаем файл bin/elasticsearch
У меня стоит ubuntu. Пробовал устанавливать и запускать как сервис но, были какие-то грабли постоянные. В итоге, я просто, запустил из папки файл и все заработало.
Для работы на “Чистом” PHP (Без фреймвоков)
Качаем библиотеку composer require elasticsearch/elasticsearch
Для работы в Yii2 ничего дополнительно качать не нужно, там уже все есть из коробки.
Основные понятия хранения данных
Кластеры Elasticsearch могут содержать индексы.
Индекс (аналог базы данных в MySQL). Индексы могут хранить типы.
Типы (похожи на таблицы в MySQL) Могут содержать в себе документы.
Документы (похожи на строки в таблице MySQL). Документ состоит из колонок (аналог колонок в MySQL).
Структура хранения данных похожа на MySQL но отличие в том, что каждая строка может хранить в себе разное количество полей. Похожим образом хранятся данные в документоориентированных базах данных.
Понятия индексирования Elasticsearch
Индекс (существительное) - аналог базы данных MySQL
Индексирование (глагол) - добавление записи. Аналог INSERT в SQL.
Inverted index (перевернутый индекс) - аналог создания индексов в MySQL.
Работа с данными
Задачи:
- Добавить данные о сотрудниках компании
- Извлечь данные о сотруднике
- Использовать механизмы поиска
- Управление индексами
- Параметры полей (mapping)
Далее, будут указаны примеры консольного ввода, "чиcтого" PHP и Yii2.
Примеры взяты из официальной документации.
Следующая часть: Elasticsearch. Добавление данных (индексация)
Комментарии
Комментарии отсутствуют, Вы можете быть первым