Drupal 8 и Elasticsearch

Drupal 8
Elasticsearch

Я создал еще один модуль по интеграции Elasticsearch в Друпал 8.

Но в отличии от других модулей, он действительно работает. Конечно с оговоркой т.к. не хватает мелких улучшений. таких как бутс поля типа fulltext, выбор анализатора для поля, агрегация полей и т.д.

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

В данной статье рассмотрим, только интеграцию в докере docker4drupal.

Первым делом нам требуется запустить необходимые контейнеры elasticsearch и kibana (не обязательно). Контейнер elasticsearch  мы не много изменим перед запуском, что бы мы могли через REST достучаться сервера elasticsearch

elasticsearch:
image: wodby/elasticsearch:$ELASTICSEARCH_TAG
environment:
ES_JAVA_OPTS: "-Xms500m -Xmx500m"
ulimits:
memlock:
soft: -1
hard: -1
labels:
- "traefik.http.routers.${PROJECT_NAME}_elasticsearch.rule=Host(`es.${PROJECT_BASE_URL}`)"
kibana:
image: wodby/kibana:$KIBANA_TAG
depends_on:
- elasticsearch
labels:
- "traefik.http.services.${PROJECT_NAME}_kibana.loadbalancer.server.port=5601"
- "traefik.http.routers.${PROJECT_NAME}_kibana.rule=Host(`kibana.${PROJECT_BASE_URL}`)"

После того как мы добавили route es.${PROJECT_BASE_URL} мы можем открыть этот путь в браузере и увидите ответ elasticsearch.
У меня на тестовом будет http://es.demo.localhost:8000/

Если у вам не удается достучаться по ссылке, то можно жестко задать настройки порта, но тут возможно kibana не увидит elasticsearch. 

  elasticsearch:
image: wodby/elasticsearch:$ELASTICSEARCH_TAG
environment:
ES_JAVA_OPTS: "-Xms500m -Xmx500m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- '127.0.0.1:3307:9200'
# labels:
# - "traefik.http.routers.${PROJECT_NAME}_elasticsearch.rule=Host(`es.${PROJECT_BASE_URL}`)"
Es

Надеюсь вам удалось запустить elasticsearch.

Следующим шагом установим модуль.

  1. Скачать модуль из репозитория GitLab;
  2. Установить модуль SearchApi;
  3. Установить composer пакет "elasticsearch/elasticsearch": "^7.5"; (Посмотрите на composer.lock возможно он установился по зависимости)
  4. Добавим сервер /admin/config/search/search-api/add-server
    путь до сервера elasticsearch "внутренний" в контексте докера т.е. http://elasticsearch:9200
Serve elasticsearch

5. Добавим индекс. Как только вы выберите сервером сервер elasticsearch внизу страницы появится дополнительные элементы. выберите анализатор который вам требуется.

analyzer es

6. После создания индекса, запустите индексацию. и можно проверить работу модуля.