Почему стоит использовать Elasticsearch для своего WordPress-сайта

Elasticsearch – это невероятно быстрое, распределенное, масштабируемое решение с открытым кодом, предназначенное для управления поисковым контентом. Elasticsearch можно легко масштабировать за счет его распределенной архитектуры. Это означает, что по мере роста вашего сайта Elasticsearch будет расти вместе с ним; и по-прежнему гарантировать высокую производительность. Одно из главных преимуществ Elasticsearch – вынос поиска в отдельный сервис, который позволяет сохранить ценные серверные ресурсы вашего сайта.

Почему стоит использовать Elasticsearch

Встроенный в WordPress поиск не оптимизирован для сайтов, сталкивающихся с активными поисковыми запросами или сложными условиями поиска. Это связано с тем, что поиск в WordPress ищет полную фразу в заголовках записей, любые/все поисковые запросы в заголовках записей, а также полные фразы в контенте записи. Поиск опирается на MySQL и не поддерживает сложные вычисления релевантности или расширенные фильтры.

Тестирование

Для тестовой среды мы возьмем следующее:

  • VVV2 Vagrant бокс с тестовым сайтом
  • Elasticsearch Vagrant бокс – базовая установка с одним кластером
  • WordPress 4.7.3 с примерно 24471 записями
  • ElasticPress 4.1 для интеграции WP-запросов с ElasticSearch
  • Debug Bar и Debug Bar ElasticPress для отслеживания ElasticSearch запросов
  • Query Monitor для отслеживания необработанных SQL-запросов

Обычные запросы:

Допустим, что пользователь посетил ваш сайт и ищет «wine country» для поиска релевантных событий. В случае с обычным поиском WordPress поисковой запрос будет выполнен примерно за 987.2мс. Эквивалентный запрос Elasticsearch выполняется примерно за 11мс, что более чем в 89 раз превышает базовый поиск в WordPress.

Сложные запросы:

Теперь давайте представим, что сайт имеет более сложный поиск, который включает в себя форму с несколькими таксономиями, мета-полями, дополнительными ключевыми словами, а также поиском диапазона дат. Пользователь заходит на сайт и ищет все «half marathon» события, которые прошли в промежуток с 1 марта 2017 по 30 июня 2017 в Аризоне или Калифорнии.  Такой сложный запрос, в котором даты событий хранятся в метаданных записей, а тип события является таксономией, потребует по меньшей мере 8 подключений MySQL, на что уйдет где-то 1260мс. Эквивалентный запрос Elasticsearch будет выполнен за 16мс.

Тестирование в Apache:

При тестировании в Apache с 10 000 запросов и 100 одновременно действующих пользователей для простого поискового запроса по типу «Short Ribs» получаем следующие результаты:

  • Базовый WP — 89.708 [мс]
  • SearchWP/FacetWP — 216.619 [мс]
  • Elasticsearch — 88.564 [мс]

Используя сложный запрос, который получает записи, метаданные, таксономии, а также даты, применяя 10000 запросов и 100 одновременно действующих пользователей, имеем следующее:

  • Сырой SQL — 240.163 [мс]
  • Elasticsearch 86.7 [мс]

Другие причины, по которым стоит использовать Elasticsearch

Elasticsearch затрагивает не только поисковые результаты. Он также может использоваться практически для любых запросов с целью увеличения их производительности.

Динамические правила и надстройки могут добавляться к запросам с целью обеспечения большего контроля над выводом результатов поиска. Пример: пользователь, ищущий события в Калифорнии, и некоторые события выводятся над остальными.

Elasticsearch подборки могут использоваться для построения динамических форм, в которых выводятся только термы таксономий, не содержащие пустых элементов.

Можно выводить все или некоторые сайты сети в результатах поиска без пересечения их таблиц.

Также существуют и многочисленные другие методы использования Elasticsearch для повышения производительности и добавления возможностей в поиск вашего сайта.

Заключение

Elasticsearch – хороший способ сделать сайт более эффективным и значительно улучшить его поиск. Будь то сложные формы, простые запросы или комплексные правила, применяемые к поисковым результатам, Elasticsearch с легкостью справится с этим, превзойдя большинство альтернатив.

Источник: https://webdevstudios.com

Блог про WordPress
Комментарии: 7
  1. ram108

    Когда читаешь такую статью с поиском «half marathon», совершенно не понятно, подходит ли этот чудо метод для сайтов на русском языке, а также для обычного, простого сата.

    1. Дмитрий (автор)

      Безусловно. А разница? Elasticsearch уже давно и активно применяется в ру-сегменте.

  2. Андрей

    Впечатляющие результаты эксперимента! Всегда с удовольствием читаю статьи, в которых есть конкретные данные, а не просто слова.

  3. Андрей

    Простите, но как реализовать сие чудо у себя на сайте?

    1. Дмитрий (автор)

      Прикрутить его к сайту не так-то просто :) Обычно для этого нанимают специалистов.

      1. Андрей

        Понял. Останемся на чистом WP. :)

  4. Konstantin

    Все проще, ставите elasticPress и указываете сервер эластика.

Добавить комментарий

Получать новые комментарии по электронной почте.