В прошлом уроке мы увидели, что LIKE не годится для поиска: не понимает форм слов, опечаток, порядка и важности. Для поиска придумали специальные системы. Самая распространённая из них Elasticsearch. Познакомимся с ней и с её окружением, а в конце урока выполним первый настоящий поисковый запрос.
Библиотека и сервер
В основе Elasticsearch лежит Lucene, библиотека на Java для полнотекстового поиска. Lucene умеет главное: разбирать текст на слова, строить индекс и быстро искать по нему с оценкой релевантности. Но это именно библиотека: её надо встроить в свою программу, и работает она на одной машине.
Elasticsearch, появившийся в 2010 году, превратил Lucene в сервер:
- общается по HTTP: запросы и ответы это JSON, работать можно из любого языка и даже из
curl; - хранит не тексты, а документы JSON: блюдо с названием, ценой, тегами и рестораном;
- раскладывает данные по нескольким машинам и держит копии на случай сбоя;
- сам строит индексы, сам их сливает и обслуживает.
Поэтому про Elasticsearch говорят: распределённый поисковый и аналитический движок поверх Lucene.
Где он работает
- Поиск по сайту и приложению. Каталог товаров, блюд, объявлений, статей. Именно это нужно «Гонцу».
- Логи. Миллионы строк логов со всех серверов в одном месте с поиском по любому слову. Об этом вторая половина раздела.
- Метрики и мониторинг. Время ответа сервисов, ошибки, нагрузка.
- Безопасность. Поиск подозрительных событий в журналах доступа.
- Аналитика поверх поиска. «Сколько найденных блюд в каждой кухне», «средняя цена найденного» считаются тем же запросом.
урок из курса
Урок из курса «Elasticsearch и ELK». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.