Расширение поддерживает версии Elasticsearch 5.0 и выше. Совместимость с последними версиями веток Elasticsearch 5.x, 6.x и 7.x тестируется автоматически.
Для реализации отдельных функций, таких как updateAllCounters(),
в расширении используются инлайн-скрипты. Скрипты написаны на языке painless
, который Elasticsearch обычно выполняет
в песочнице. В современных версиях сервера запуск таких скриптов разрешен по умолчанию, поэтому специально ничего
настраивать не нужно. Тем не менее, для более старых серверов, например, версии 5.0, запуск инлайн-скриптов нужно явно
разрешить. В документации Elasticsearch
это описано более подробно.
Предпочтительный способ установки расширения - с помощью composer.
composer require --prefer-dist yiisoft/yii2-elasticsearch
Для работы с расширением нужно добавить класс 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
к первому узлу из списка и получает адреса всех узлов в кластере.
Затем из этих узлов случайным образом выбирается активный узел.
Такое поведение можно отключить, установив параметр $autodetectCluster
равным false
. Тогда активным станет произвольный узел из тех, что заданы в конфигурации.
Для нормальной работы автоопределения узлов кластера, в узлах, которые возвращает запрос
GET /_nodes
, должно быть корректно задано полеhttp_address
. Со стандартным сервером Elasticsearch обычно не возникает никаких сложностей, но известны случаи, когда нестандартные сборки, особенно в AWS, возвращают некорректные данные. В таком случае можно отключить автоопределение и задать список узлов вручную.Также автоопределение можно отключить чтобы ускорить работу расширения. Если в кластере предусмотрен отдельный координирующий узел, можно направлять все запросы только к нему. Для кластеров, в которых всего несколько узлов с известными адресами, целесообразно объявить эти узлы в конфигурации явно и сэкономить время на ненужном запросе.
Также в конфигурации нужно задать версию языка, который используется для работы с сервером. Значение параметра соответствует
версии Elasticsearch. Для ветки 5.x параметр $dslVersion должен быть равен
5
, для ветки 6.x - 6
, для ветки 7.x - 7
. Значение по умолчанию - 5
.