Шпаргалка по Elastic Search

Сайт из тысяч статей. Интернет-магазин из десятков тысяч продуктов. Всё работало быстро, но сайт расширяется и контента стало много. Это плюс с точки зрения SEO, но сказывается на скорости поиска по товарам. Стандартный поиск на сайте стал работать медленно – пользователь ждёт несколько секунд и закрывает вкладку, показатели отказов растут. Не очень хороший расклад, не правда ли?

Официальная документация по Elastic Search очень подробная и при этом в ней трудно оперативно найти самые нужные базовые функции. Мы рады помочь разобраться, предоставив «шпаргалку» — только самое необходимое для «быстрого старта».

Шпаргалка по Elastic Search

Мы расскажем про «джентельменский набор» базовых функций работы с Elastic Search на PHP: как создать маппинг, как очистить индекс, как сделать запрос к «Еластику», как добавить данные в БД, посмотреть данные, обновить, получить результаты поискового запроса и бонусом приложим функцию добавления данных в «Еластик» при постинге статьи в CMS Wordpress.

Содержание статьи:

Вводные данные

ElasticSearch — это серверный поиск, который работает быстро на больших объёмах данных. Даже при объёме в сотни тысяч позиций процесс происходит «моментально», например – полнотекстовой поиск на всех блогах Wordpress.com работает на «Еластике».

Пошаговая установка «Еластика» на сервер не входит в данный туториал, условимся на том, что «Еластик» установлен и сосредоточимся на том, как через PHP-функции работать с базой и производить поиск.

Краткие вводные: ElasticSearch запущен в «докере» на 9200 порту, образ от bitnami через docker compose. docker-compose.yml:

Шпаргалка по Elastic Search

1. PHP-функция для запросов к «Еластику»

Все последующие запросы будут происходить через обращение к данной «универсальной» функции, которая отправляет запрос к localhost на порт 9200, получает ответ и возвращает его:

Шпаргалка по Elastic Search

Для начала нужно придумать название нашей базы данных. Для примера для всех запросов будем работать с базой tovaroskop_posts.

2. Очищение индекса

Шпаргалка по Elastic Search

Данный запрос очистит БД "Еластика", вернёт: {"acknowledged":true}.

3. Создаём «маппинг»

Под маппингом в «Еластике» подразумевается структура БД, указание, какие поля какой формат данных содержат. ID в данный список на входит. Всё стандартно: integer, text, date, float:

Шпаргалка по Elastic Search

Запрос выполняется один раз для создания БД, при успешном выполнении возвращает:

Шпаргалка по Elastic Search

Маппинг успешно создан.

3.1 Проверка маппинга

Проверим:

Шпаргалка по Elastic Search

В ответе присутствуют созданные нами поля: all, date и т.д.:

Шпаргалка по Elastic Search

Переходим к следующему шагу.

4. Добавляем данные в БД «Еластика»

Шпаргалка по Elastic Search

Ответ:

{"_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, используем следующий код:

Шпаргалка по Elastic Search

6. Поиск

Основная функция, для которой мы создали всё вышеописанное – быстрый поиск. Делается следующим образом:

Шпаргалка по Elastic Search

7. Бонус – Функция для WordPress

Параметры в запросе «Size» и «From» — пагинация.

В качестве бонуса прикладываем функцию добавления/обновления данных при постинге в WordPress.

Шпаргалка по Elastic Search

Код взят из реального проекта https://tovaroskop.com и в поле all добавлены:

  • Контент статьи,
  • «отрывок»,
  • Meta Description из плагина Yoast
  • Заголовки и названия продуктов из рейтинга.

Дата преобразуется в валидный для «Еластика» формат в строке:

Шпаргалка по Elastic Search

По вашему запросу найдено…

Мы рассмотрели основные функции Elastic Search, достаточные для «Быстрого старта» — оперативно разобраться в синтаксисе базовых функций, или «вспомнить» как, к примеру, обновить данные по ID. Статья написана в формате «шпаргалки» — содержит в себе всё необходимое без массивной документации.

Согласно нашему опыту – замена штатного поиска CMS Bitrix/Wordpress на поиск Elastic Search в десятки раз ускоряет загрузку страницы с поисковыми результатами, что улучшает пользовательский опыт и эффективность работы веб-сайта.

Если у вас есть личный опыт использования Elastic Search на своих проектах – поделитесь этим в комментариях.

Павел
Frontend-разработчик Webit
77
4 комментария

Полезно и кратко вышло, все по делу

Ответить

Такое больше для хабра подходит а не для VC

Ответить

Очень доходчиво донесли инфу

Ответить

Спасибо за полезную статью!

Ответить