Skip to content

Latest commit

 

History

History
70 lines (53 loc) · 5.19 KB

installation.md

File metadata and controls

70 lines (53 loc) · 5.19 KB

Установка

Требования

Расширение поддерживает версии Elasticsearch 5.0 и выше. Совместимость с последними версиями веток Elasticsearch 5.x, 6.x и 7.x тестируется автоматически.

Настройка Elasticsearch

Для реализации отдельных функций, таких как [[yii\elasticsearch\ActiveRecord::updateAllCounters()|updateAllCounters()]], в расширении используются инлайн-скрипты. Скрипты написаны на языке painless, который Elasticsearch обычно выполняет в песочнице. В современных версиях сервера запуск таких скриптов разрешен по умолчанию, поэтому специально ничего настраивать не нужно. Тем не менее, для более старых серверов, например, версии 5.0, запуск инлайн-скриптов нужно явно разрешить. В документации Elasticsearch это описано более подробно.

Установка через Composer

Предпочтительный способ установки расширения - с помощью composer.

composer require --prefer-dist yiisoft/yii2-elasticsearch

Настройка приложения

Для работы с расширением нужно добавить класс [[yii\elasticsearch\Connection|Connection]] к компонентам приложения и настроить его:

return [
    //....
    'components' => [
        'elasticsearch' => [
            'class' => 'yii\elasticsearch\Connection',
            'nodes' => [
                ['http_address' => '127.0.0.1:9200'],
                //настройте несколько хостов, если у вас есть кластер
            ],
            // установите autodetectCluster = false, чтобы не определять адреса узлов в кластере автоматически
            // 'autodetectCluster' => false,
            'dslVersion' => 7, // по умолчанию - 5
        ],
    ],
];

В параметрах соединения нужно задать хотя бы один узел. По умолчанию выполняется автоматическое определение узлов кластера. Расширение выполняет запрос GET /_nodes к первому узлу из списка и получает адреса всех узлов в кластере. Затем из этих узлов случайным образом выбирается активный узел.

Такое поведение можно отключить, установив параметр [[yii\elasticsearch\Connection::$autodetectCluster|$autodetectCluster]] равным false. Тогда активным станет произвольный узел из тех, что заданы в конфигурации.

Для нормальной работы автоопределения узлов кластера, в узлах, которые возвращает запрос GET /_nodes, должно быть корректно задано поле http_address. Со стандартным сервером Elasticsearch обычно не возникает никаких сложностей, но известны случаи, когда нестандартные сборки, особенно в AWS, возвращают некорректные данные. В таком случае можно отключить автоопределение и задать список узлов вручную.

Также автоопределение можно отключить чтобы ускорить работу расширения. Если в кластере предусмотрен отдельный координирующий узел, можно направлять все запросы только к нему. Для кластеров, в которых всего несколько узлов с известными адресами, целесообразно объявить эти узлы в конфигурации явно и сэкономить время на ненужном запросе.

Также в конфигурации нужно задать версию языка, который используется для работы с сервером. Значение параметра соответствует версии Elasticsearch. Для ветки 5.x параметр [[yii\elasticsearch\Connection::$dslVersion|$dslVersion]] должен быть равен 5, для ветки 6.x - 6, для ветки 7.x - 7. Значение по умолчанию - 5.