Улучшаем поиск с помошью Elasticsearch

Улучшаем поиск с помошью Elasticsearch

Ни для кого не секрет что родной поиск CMS Magento не самый лучший где всего три опции: like, fulltext и combine (like + fulltext). Поиск осуществляется в зависимости от выбранной опции по индескной таблице с заранее заполненными данными из атрибутов товара разрешенных использовать в поиске, поэтому когда возникает задача поиска по блогу, статическим страницам, категориям и множеству других параметров того же товара то нужно уже использовать например поисковой движок об интеграции одного из них я расскажу далее.

Сегодня речь пойдет о интеграции Elasticsearch (распределенный RESTful поисковой и аналитический движок, подробнее можно почитать перейдя по ссылке на официальный сайт или же погуглив благо информации море), ставить будем последнюю на момент публикации версию Elasticsearch 5.4.

Что нам нужно:

  1. Хостинг с доступом по SSH (это может быть  VPS или выделенный сервер, облака и другие сервисы в данном случае не рассматриваем)
  2. Рут доступ к хостингу

Что у нас есть:

  1. Хостинг с Centos 7 (x64)
  2. Рут доступ к хостингу
  3. CMS Magento 1.9.3
  4. Модуль который интегриует Elasticsearch в наш магазин Wyomind_Elasticsearch

Последовательность действий:

Для работы Elasticsearch на сервере обязательно должна быть установлена java для установки на нашу систему нужно:

Переходим во временный каталог

cd /tmp

Качаем jdk, в нашем случае 8-й версии, т.к. условия лицензии Oracle не позволяют скачивать jdk без соглашения то мы добавляем ключи –no-cookies –header “Cookie: oraclelicense=accept-securebackup-cookie”

curl -LO http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz -H --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"

Распаковываем архив

tar xvzf jdk-8u111-linux-x64.tar.gz

И перемещаем полученные файлы

mv jdk1.8.0_111 /opt

После чего переходим в каталог с распакованным архивом

cd /opt/jdk1.8.0_111

И приступаем непосредственно к установке с помощью комманды alternatives

alternatives --install /usr/bin/java java /opt/jdk1.8.0_111/bin/java 2

Теперь нужно установить путь для jar и javac

alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_111/bin/jar 2

alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_111/bin/javac 2

alternatives --set jar /opt/jdk1.8.0_111/bin/jar

alternatives --set javac /opt/jdk1.8.0_111/bin/javac

Далее устанавливаем переменные окружения

export JAVA_HOME=/opt/jdk1.8.0_111

export JRE_HOME=/opt/jdk1.8.0_111/jre/

export PATH=$PATH:/opt/jdk1.8.0_111/bin:/opt/jdk1.8.0_111/jre/bin

После всего нужно проверить все ли ок, введя комманду

java -version

Если видим

Java(TM) SE Runtime Environment (build 1.8.0_111-b14)  Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

То все хорошо, продолжаем установку Elastic.

 

Заходим на официальный сайт и скачиваем в нашем случае .rpm или .deb пакет(так же есть варианты установки из архива, установка на windows и отдельно docker), но для установки на систему с поддержкой RPM есть ещё один более удобный вариант, создаем файл elasticsearch.repo в каталоге /etc/yum.repos.d/ и добавляем в него вот эти строки

[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

После чего выполняем

sudo yum install elasticsearch

Перезапускаем демон systemctl и включае автостарт Elastic при загрузке системы

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Для запуска и остановки используйте команды ниже

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

 

Для проверки правильно ли мы все выполнили и Elastic работает, можно выполнить запрос в консоли

 curl -XGET 'localhost:9200/?pretty'

У меня например вот такой результат

{
  "name" : "F3J2K0z",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "_Obq3T-1SUeRusur5Ug3wQ",
  "version" : {
    "number" : "5.3.2",
    "build_hash" : "3068195",
    "build_date" : "2017-04-24T16:15:59.481Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.2"
  },
  "tagline" : "You Know, for Search"
}

И это значит что все ок)) Естественно что не всем подойдет данная конфигурация т.к. нельзя предугадать желания и цели каждого но для большинства данная конфигурация будет вполне приемлема, минимум настроек запустили, проверили и далее уже по желанию и возможностям настраиваем все под себя благо Elastic очень гибкий в настройке, в даном же примере стандартная установка.

Далее переходим к установке/настройке модуля Wyomind_Elasticsearch не буду заострять на этом внимание т.к. это обычный модуль, просто устанавливаем и настраиваем по юзер гайд который прилагается к самому модулю или же его можно посмотреть на официальном сайте разработчиков данного расширения которое есть под 1.9.x  и 2.x версии системы, настройка Elastic на сервере при этом не отличается т.к. это отдельно ПО.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *