PHP code example of mikemadisonweb / yii2-elasticsearch
1. Go to this page and download the library: Download mikemadisonweb/yii2-elasticsearch library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mikemadisonweb / yii2-elasticsearch example snippets
// config/main.php
return [
// ...
'components' => [
// ...
'elasticsearch' => [
'class' => \mikemadisonweb\elasticsearch\Configuration::class,
'clients' => [
'default' => [
'hosts' => [
'server1.yourdomain.com',
'server2.yourdomain.com:9200',
],
],
],
'indexes' => [
[
'index' => 'my-blog',
'client' => [
'name' => 'default',
],
'body' => [
'settings' => [
'number_of_shards' => 5,
'number_of_replicas' => 1,
],
'mappings' => [
'posts' => [
'dynamic' => 'strict', // Validate upon indexing, optional
'properties' => [
'title' => [
'type' => 'text',
],
'body' => [
'type' => 'text',
],
'keywords' => [
'type' => 'keyword',
],
'category_id' => [
'type' => 'integer',
'
'_source' => [
'enabled' => true
],
// config/main.php
return [
// ...
'controllerMap' => [
'elastic-index' => \mikemadisonweb\elasticsearch\commands\IndexController::class,
],
// ...
];
$indexer = \Yii::$app->elasticsearch->getIndexer('my-blog', 'posts');
$blogPost = [
'title' => 'New in Elasticsearch 6.0',
'body' => 'Lots of stuff...',
'keywords' => 'Elasticsearch',
'category_id' => '3',
'tags' => [1, 43, 64],
];
$this->indexer->insert($blogPost);
IndexerResponse update(array $fields, string $id, array $upsert = [], $script = '', array $scriptParams = [])
IndexerResponse delete(string $id, bool $ignoreMissing = false)
array insertBatch(array $batch)
$finder = \Yii::$app->elasticsearch->getFinder('my-blog', 'posts');
$results = $finder
->match('How to use Elasticsearch', 'title')
->all();
$finder = \Yii::$app->elasticsearch->getFinder('my-blog', 'posts');
$results = $finder
->select(['title', 'body'])
->match('How to use Elasticsearch', 'title')
->where('category_id = 14')
->sort('post_date:desc')
->limit(100)
->offset(100)
->all();
foreach ($results as $result) {
// ...
}
Finder match(string $query, array|string $fields = '_all', string $condition = 'and', string $operator = 'and', string $type = 'cross_fields')
$finder = \Yii::$app->elasticsearch->getFinder('my-blog', 'posts');
$results = $finder
->where("category_id = 11 OR (tags in [1, 53, 78] AND keywords = 'Elastica')")
->all();
$json = '{
"query" : {
"match" : {
"body" : "Most important things in life"
}
}
}';
$finder = \Yii::$app->elasticsearch->getFinder('my-blog', 'posts');
$results = $finder->sendJson($json);
// config/main.php
return [
// index settings
'settings' => [
'number_of_shards' => 1,
'number_of_replicas' => 0,
'analysis' => [
'filter' => [
'russian_stop' => [
'type' => 'stop',
'stopwords' => '_russian_',
],
'russian_stemmer' => [
'type' => 'stemmer',
'language' => 'russian',
],
],
'analyzer' => [
'default' => [
'tokenizer' => 'standard',
'filter' => [
'lowercase',
'russian_stop',
'russian_stemmer',
],
],
],
],
],
// ...
];
$finder = \Yii::$app->elasticsearch->getFinder('my-blog', 'posts');
$results = $finder
->match('Find me!', 'body')
->highlight(true, [
'fields' => [
'body' => new \stdClass()
],
'pre_tags' => '<strong>',
'post_tags' => '</strong>',
])
->all();
// config/main.php
return [
// index configuration
'index' => 'my-blog',
'defaults' => [
'limit' => 100,
'sort' => 'post_date:desc',
'highlight' => [
'enabled' => true,
'pre_tags' => '<span class=“highlight”>',
'post_tags' => '</span>',
'fields' => ['*' => ['number_of_fragments' => 0]]
],
],
// ...
];
php composer.phar