Установка и настройка Elasticsearch на Debian

Установка и настройка Elasticsearch на Debian

  1. Next
    Совместимость с XenForo:
    • XenForo 1.3
    • XenForo 1.4
    • XenForo 1.5
    Инструкция актуальна для Debian 8 версии. Устанавливать Elasticsearch будем последней версии 2.1. Предполагается, что вы работаете из-под root'a и у вас уже установлены пакеты curl, sudo и wget, в противном случае выполните команду:
    Код:
    apt-get install curl sudo wget
    1) Для начала, нам требуется установить виртуальную машину Java, так как Elasticsearch работает на ее основе. Для этого, добавляем репозиторий backports, т.к. в стандартном нужная версия отсутствует. Создаем файл /etc/apt/sources.list.d/backports.list со следующим содержимым:
    Код:
    deb http://http.debian.net/debian jessie-backports main contrib non-free
    Или просто выполняем следующую команду:
    Код:
    echo "deb http://http.debian.net/debian jessie-backports main contrib non-free" | sudo tee -a /etc/apt/sources.list.d/backports.list
    После добавления репозитория можно установить саму java. Выполняем следующую команду:
    Код:
    apt-get install openjdk-8-jre
    И терпеливо ждем скачивания и сборки всех 100+ зависимых пакетов.

    2) Добавляем репозиторий Elastic. Создаем файл /etc/apt/sources.list.d/elasticsearch-2.x.list со следующим содержимым:
    Код:
    deb http://packages.elastic.co/elasticsearch/2.x/debian stable main
    Или просто выполняем следующую команду:
    Код:
    echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
    После чего добавляем публичный GPG-ключ репозитория:
    Код:
    wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
    И обновляем кеш менеджера пакетов:
    Код:
    apt-get update
    3) Устанавливаем сам Elasticsearch:
    Код:
    apt-get install elasticsearch
    И разрешаем его автозапуск:
    Код:
    /bin/systemctl daemon-reload
    /bin/systemctl enable elasticsearch.service
    4) Редактируем файл /etc/elasticsearch/elasticsearch.yml, и в самый его конец вставляем конструкцию следующего вида (если основной язык вашего форума русский, для украинского требуется иная из-за диакритических знаков):
    Код:
    cluster.name: my_index
    index.analysis.analyzer.default.type: custom
    index.analysis.analyzer.default.tokenizer: standard
    index.analysis.analyzer.default.filter: ["standard", "lowercase", "stop", "snow"]
    index.analysis.filter.snow.type: snowball
    index.analysis.filter.snow.language: Russian
    Где my_index - желаемое название вашего кластера индексов строго на английском языке без специальных знаков кроме нижнего подчеркивания.

    Также нужно поправить параметр ES_HEAP_SIZE в файле /etc/default/elasticsearch, который показывает, какой максимальных объем оперативной памяти может использовать Elasticsearch на вашем сервере. Для небольших форумов рекомендую значение в 256 Мб, а для форума с 1 миллионом сообщений размера в 1 Гб более чем достаточно. Больше ставить не нужно.

    5) Перезапускаем Elasticsearch
    Код:
    systemctl restart elasticsearch
    И проверяем работает ли он, примерно через 30 секунд после перезапуска:
    Код:
    curl http://localhost:9200
    Вывод команды должен быть примерно следующим:
    Код:
    root@server:~# curl http://localhost:9200
    {
      "name" : "Prometheus",
      "cluster_name" : "server_index",
      "version" : {
        "number" : "2.0.0",
        "build_hash" : "de54438d6af8f9340d50c5c786151783ce7d6be5",
        "build_timestamp" : "2015-10-22T08:09:48Z",
        "build_snapshot" : false,
        "lucene_version" : "5.2.1"
      },
      "tagline" : "You Know, for Search"
    }
    Если в выводе нет ничего и команда ругается на невозможность подключения к указанному порту - изучаем логи на предмет явных ошибок. Все достаточно просто - смотрим на вывод команды: systemctl status elasticsearch.
    6) Настраиваем XenForo для работы с Elasticsearch.
    Устанавливаем дополнение XenForo Enhanced Search (+ русификация) и заходим в настройки поиска (admin.php?options/list/searchOptions).

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

    7) Обязательно перестраиваем поисковый индекс на странице перестраивания кешей (admin.php?tools/rebuild), не забывая установить галочку "Удалить весь индекс перед перестраиванием", поскольку в базе данных у вас больше поисковый индекс храниться не будет и это позволит освободить достаточно большое количество места в ней.

    В принципе, после выполнения этого шага, у вас на форуме уже полноценно будет работать Elasticsearch, в чем вы можете убедиться самостоятельно, что-либо поискав или на специальной странице в админке (admin.php?elasticsearch).
Поделиться этой страницей в