Docs are available in english and russian. Based on https://github.com/elastic/elasticsearch
$ composer require --prefer-dist mirocow/yii2-elasticsearch
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch
$ composer require --prefer-dist mirocow/yii2-elasticsearch
- Create a class that implements the
common\modules\elasticsearch\contracts\Index
interface. - Add it to the module configuration in
common/config/main.php
- Start indexing
return [
'modules' => [
// elasticsearch
common\modules\elasticsearch\Module::MODULE_NAME => [
'class' => common\modules\elasticsearch\Module::class,
'indexes' => [
common\repositories\indexes\ProductsSearchIndex::class
]
],
],
'bootstrap' => [
mirocow\elasticsearch\Bootstrap::class,
]
];
Create empty index
$ php yii elasticsearch/index/create index_name
Fill index with all documents
$ php yii elasticsearch/index/populate index_name
Destroy an index and all its data
$ php yii elasticsearch/index/destroy index_name
Remove all existing indexes, re-create all indexes and re-index all documents for all indexes
$ php yii elasticsearch/index/rebuild
$ export PHP_IDE_CONFIG="serverName=www.site.loc" && export XDEBUG_CONFIG="remote_host=192.168.1.6 idekey=xdebug" && php7.0 ./yii elasticsearch/index/create products_search
<?php
/** @var QueryBuilder $query */
$query = new QueryBuilder;
$query = $query
->add(QueryHelper::bool($filter, $must, $should, $must_not))
->aggregations($aggregations)
->withSource('attributes');