Сайт из тысяч статей. Интернет-магазин из десятков тысяч продуктов. Всё работало быстро, но сайт расширяется и контента стало много. Это плюс с точки зрения SEO, но сказывается на скорости поиска по товарам. Стандартный поиск на сайте стал работать медленно – пользователь ждёт несколько секунд и закрывает вкладку, показатели отказов растут. Не очень хороший расклад, не правда ли?Официальная документация по Elastic Search очень подробная и при этом в ней трудно оперативно найти самые нужные базовые функции. Мы рады помочь разобраться, предоставив «шпаргалку» — только самое необходимое для «быстрого старта».Мы расскажем про «джентельменский набор» базовых функций работы с Elastic Search на PHP: как создать маппинг, как очистить индекс, как сделать запрос к «Еластику», как добавить данные в БД, посмотреть данные, обновить, получить результаты поискового запроса и бонусом приложим функцию добавления данных в «Еластик» при постинге статьи в CMS Wordpress.Содержание статьи:Вводные данные1. PHP-функция для запросов к «Еластику»2. Очищение индекса3. Создаём «маппинг»3.1 Проверка маппинга4. Добавляем данные в БД «Еластика»4.1 Обновление данных5. Просмотр элемента6. Поиск7. Бонус – Функция для WordPressИтогВводные данныеElasticSearch — это серверный поиск, который работает быстро на больших объёмах данных. Даже при объёме в сотни тысяч позиций процесс происходит «моментально», например – полнотекстовой поиск на всех блогах Wordpress.com работает на «Еластике».Пошаговая установка «Еластика» на сервер не входит в данный туториал, условимся на том, что «Еластик» установлен и сосредоточимся на том, как через PHP-функции работать с базой и производить поиск.Краткие вводные: ElasticSearch запущен в «докере» на 9200 порту, образ от bitnami через docker compose. docker-compose.yml:1. PHP-функция для запросов к «Еластику»Все последующие запросы будут происходить через обращение к данной «универсальной» функции, которая отправляет запрос к localhost на порт 9200, получает ответ и возвращает его:Для начала нужно придумать название нашей базы данных. Для примера для всех запросов будем работать с базой tovaroskop_posts.2. Очищение индексаДанный запрос очистит БД "Еластика", вернёт: {"acknowledged":true}.3. Создаём «маппинг»Под маппингом в «Еластике» подразумевается структура БД, указание, какие поля какой формат данных содержат. ID в данный список на входит. Всё стандартно: integer, text, date, float:Запрос выполняется один раз для создания БД, при успешном выполнении возвращает:Маппинг успешно создан.3.1 Проверка маппингаПроверим:В ответе присутствуют созданные нами поля: all, date и т.д.:Переходим к следующему шагу.4. Добавляем данные в БД «Еластика»Ответ:{"_index":"tovaroskop_posts","_id":"1093","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":13,"_primary_term":1}4.1 Обновление данныхВ случае, когда, к примеру, изменилась цена на товар и нужно обновить уже существующую запись – делаем идентичный запрос, как при добавлении записи.Данные обновятся, в ответе сменится слово «created» на «updated».5. Просмотр элементаЧтобы посмотреть данные элемента по ID, используем следующий код:6. ПоискОсновная функция, для которой мы создали всё вышеописанное – быстрый поиск. Делается следующим образом:7. Бонус – Функция для WordPressПараметры в запросе «Size» и «From» — пагинация.В качестве бонуса прикладываем функцию добавления/обновления данных при постинге в WordPress.Код взят из реального проекта https://tovaroskop.com и в поле all добавлены:Контент статьи,«отрывок»,Meta Description из плагина YoastЗаголовки и названия продуктов из рейтинга.Дата преобразуется в валидный для «Еластика» формат в строке:По вашему запросу найдено…Мы рассмотрели основные функции Elastic Search, достаточные для «Быстрого старта» — оперативно разобраться в синтаксисе базовых функций, или «вспомнить» как, к примеру, обновить данные по ID. Статья написана в формате «шпаргалки» — содержит в себе всё необходимое без массивной документации.Согласно нашему опыту – замена штатного поиска CMS Bitrix/Wordpress на поиск Elastic Search в десятки раз ускоряет загрузку страницы с поисковыми результатами, что улучшает пользовательский опыт и эффективность работы веб-сайта.Если у вас есть личный опыт использования Elastic Search на своих проектах – поделитесь этим в комментариях.ПавелFrontend-разработчик WebitЧитайте и другие наши статьи о разработке:Уязвимости сайтов: какие бывают и как справлятьсяНе создавайте свой сайт на шаблоне! О преимуществах разработки сайта перед шаблонными решениямиЯндекс.Маркет дистрибуция: расширяем возможности APIКак мы меняем вектор работы с клиентами от техподдержки до развития проектов
Полезно и кратко вышло, все по делу
Такое больше для хабра подходит а не для VC
Очень доходчиво донесли инфу
Спасибо за полезную статью!