Class yii\elasticsearch\Command

Inheritanceyii\elasticsearch\Command » yii\base\Component
Available since extension's version2.0
Source Code https://github.com/yiisoft/yii2-elasticsearch/blob/master/Command.php

The Command class implements the API for accessing the elasticsearch REST API.

Check the elasticsearch guide for details on these commands.

Public Properties

Hide inherited properties

Property Type Description Defined By
$db yii\elasticsearch\Connection yii\elasticsearch\Command
$index string|array The indexes to execute the query on. yii\elasticsearch\Command
$options array Options to be appended to the query URL, such as "search_type" for search or "timeout" for delete yii\elasticsearch\Command
$queryParts array List of arrays or json strings that become parts of a query yii\elasticsearch\Command
$type string|array The types to execute the query on. yii\elasticsearch\Command

Public Methods

Hide inherited methods

Method Description Defined By
addAlias() yii\elasticsearch\Command
aliasActions() Runs alias manipulations. yii\elasticsearch\Command
aliasExists() yii\elasticsearch\Command
clearIndexCache() yii\elasticsearch\Command
clearScroll() yii\elasticsearch\Command
closeIndex() yii\elasticsearch\Command
createIndex() Creates an index yii\elasticsearch\Command
createTemplate() yii\elasticsearch\Command
delete() Deletes a document from the index yii\elasticsearch\Command
deleteAllIndexes() Deletes all indexes yii\elasticsearch\Command
deleteByQuery() Sends a request to the delete by query yii\elasticsearch\Command
deleteIndex() Deletes an index yii\elasticsearch\Command
deleteMapping() yii\elasticsearch\Command
deleteTemplate() yii\elasticsearch\Command
exists() Gets a document from the index yii\elasticsearch\Command
flushIndex() yii\elasticsearch\Command
get() Gets a document from the index yii\elasticsearch\Command
getAliasInfo() yii\elasticsearch\Command
getIndexAliases() yii\elasticsearch\Command
getIndexInfoByAlias() yii\elasticsearch\Command
getIndexStatus() yii\elasticsearch\Command
getIndexesByAlias() yii\elasticsearch\Command
getMapping() yii\elasticsearch\Command
getSource() Gets a documents _source from the index (>=v0.90.1) yii\elasticsearch\Command
getTemplate() yii\elasticsearch\Command
indexExists() Checks whether an index exists yii\elasticsearch\Command
insert() Inserts a document into an index yii\elasticsearch\Command
mget() Gets multiple documents from the index yii\elasticsearch\Command
openIndex() yii\elasticsearch\Command
refreshIndex() yii\elasticsearch\Command
removeAlias() yii\elasticsearch\Command
scroll() yii\elasticsearch\Command
search() Sends a request to the _search API and returns the result yii\elasticsearch\Command
setMapping() yii\elasticsearch\Command
suggest() Sends a request to the _suggest API and returns the result yii\elasticsearch\Command
typeExists() yii\elasticsearch\Command
update() Updates a document yii\elasticsearch\Command
updateAnalyzers() Define new analyzers for the index. yii\elasticsearch\Command
updateSettings() Change specific index level settings in real time. yii\elasticsearch\Command

Property Details

Hide inherited properties

$db public property
$index public property

The indexes to execute the query on. Defaults to null meaning all indexes

See also http://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html#search-multi-index-type.

public string|array $index null
$options public property

Options to be appended to the query URL, such as "search_type" for search or "timeout" for delete

public array $options = []
$queryParts public property

List of arrays or json strings that become parts of a query

public array $queryParts null
$type public property

The types to execute the query on. Defaults to null meaning all types

public string|array $type null

Method Details

Hide inherited methods

addAlias() public method
public addAlias( mixed $index, mixed $alias, array $aliasParameters = [] ): boolean
$index mixed
$alias mixed
$aliasParameters array

                public function addAlias($index, $alias, $aliasParameters = [])
{
    return (bool)$this->db->put([$index, '_alias', $alias], [], json_encode((object)$aliasParameters));
}

            
aliasActions() public method

Runs alias manipulations.

If you want to add alias1 to index1 and remove alias2 from index2 you can use following commands: ~~~ $actions = [

 ['add' => ['index' => 'index1', 'alias' => 'alias1']],
 ['remove' => ['index' => 'index2', 'alias' => 'alias2']],

]; ~~~

See also https://www.elastic.co/guide/en/elasticsearch/reference/2.0/indices-aliases.html#indices-aliases.

public aliasActions( array $actions ): boolean
$actions array

                public function aliasActions(array $actions)
{
    return (bool)$this->db->post(['_aliases'], [], json_encode(['actions' => $actions]));
}

            
aliasExists() public method

public aliasExists( string $alias ): boolean
$alias string

                public function aliasExists($alias)
{
    $indexes = $this->getIndexesByAlias($alias);
    return !empty($indexes);
}

            
clearIndexCache() public method
public clearIndexCache( mixed $index ): mixed
$index mixed

                public function clearIndexCache($index)
{
    return $this->db->post([$index, '_cache', 'clear']);
}

            
clearScroll() public method (available since version 2.0.4)
public clearScroll( array $options = [] ): mixed
$options array

                public function clearScroll($options = [])
{
   return $this->db->delete(['_search', 'scroll'], $options);
}

            
closeIndex() public method
public closeIndex( mixed $index ): mixed
$index mixed

                public function closeIndex($index)
{
    return $this->db->post([$index, '_close']);
}

            
createIndex() public method
public createIndex( mixed $index, array $configuration null ): mixed
$index mixed
$configuration array

                public function createIndex($index, $configuration = null)
{
    $body = $configuration !== null ? Json::encode($configuration) : null;
    return $this->db->put([$index], [], $body);
}

            
createTemplate() public method
public createTemplate( mixed $name, mixed $pattern, mixed $settings, mixed $mappings, integer $order 0 ): mixed
$name mixed
$pattern mixed
$settings mixed
$mappings mixed
$order integer

                public function createTemplate($name, $pattern, $settings, $mappings, $order = 0)
{
    $body = Json::encode([
        'template' => $pattern,
        'order' => $order,
        'settings' => (object) $settings,
        'mappings' => (object) $mappings,
    ]);
    return $this->db->put(['_template', $name], [], $body);
}

            
delete() public method
public delete( mixed $index, mixed $type, mixed $id, array $options = [] ): mixed
$index mixed
$type mixed
$id mixed
$options array

                public function delete($index, $type, $id, $options = [])
{
    return $this->db->delete([$index, $type, $id], $options);
}

            
deleteAllIndexes() public method
public deleteAllIndexes( ): mixed

                public function deleteAllIndexes()
{
    return $this->db->delete(['_all']);
}

            
deleteByQuery() public method

Sends a request to the delete by query

public deleteByQuery( array $options = [] ): mixed
$options array

                public function deleteByQuery($options = [])
{
    if (!isset($this->queryParts['query'])) {
        throw new InvalidCallException('Can not call deleteByQuery when no query is given.');
    }
    $query = [
        'query' => $this->queryParts['query'],
    ];
    if (isset($this->queryParts['filter'])) {
        $query['filter'] = $this->queryParts['filter'];
    }
    $query = Json::encode($query);
    $url = [$this->index !== null ? $this->index : '_all'];
    if ($this->type !== null) {
        $url[] = $this->type;
    }
    $url[] = '_query';
    return $this->db->delete($url, array_merge($this->options, $options), $query);
}

            
deleteIndex() public method
public deleteIndex( mixed $index ): mixed
$index mixed

                public function deleteIndex($index)
{
    return $this->db->delete([$index]);
}

            
deleteMapping() public method
public deleteMapping( mixed $index, mixed $type ): mixed
$index mixed
$type mixed

                public function deleteMapping($index, $type)
{
    return $this->db->delete([$index, '_mapping', $type]);
}

            
deleteTemplate() public method
public deleteTemplate( mixed $name ): mixed
$name mixed

                public function deleteTemplate($name)
{
    return $this->db->delete(['_template', $name]);
}

            
exists() public method
public exists( mixed $index, mixed $type, mixed $id ): mixed
$index mixed
$type mixed
$id mixed

                public function exists($index, $type, $id)
{
    return $this->db->head([$index, $type, $id]);
}

            
flushIndex() public method
public flushIndex( mixed $index '_all' ): mixed
$index mixed

                public function flushIndex($index = '_all')
{
    return $this->db->post([$index, '_flush']);
}

            
get() public method
public get( mixed $index, mixed $type, mixed $id, array $options = [] ): mixed
$index mixed
$type mixed
$id mixed
$options array

                public function get($index, $type, $id, $options = [])
{
    return $this->db->get([$index, $type, $id], $options);
}

            
getAliasInfo() public method
public getAliasInfo( ): array

                public function getAliasInfo()
{
    $aliasInfo = $this->db->get(['_alias', '*']);
    return $aliasInfo ?: [];
}

            
getIndexAliases() public method
public getIndexAliases( string $index ): array
$index string

                public function getIndexAliases($index)
{
    $responseData = $this->db->get([$index, '_alias', '*']);
    if (empty($responseData)) {
        return [];
    }
    return $responseData[$index]['aliases'];
}

            
getIndexInfoByAlias() public method
public getIndexInfoByAlias( string $alias ): array
$alias string

                public function getIndexInfoByAlias($alias)
{
    $responseData = $this->db->get(['_alias', $alias]);
    if (empty($responseData)) {
        return [];
    }
    return $responseData;
}

            
getIndexStatus() public method
public getIndexStatus( mixed $index '_all' ): mixed
$index mixed

                public function getIndexStatus($index = '_all')
{
    return $this->db->get([$index, '_status']);
}

            
getIndexesByAlias() public method

public getIndexesByAlias( string $alias ): array
$alias string

                public function getIndexesByAlias($alias)
{
    return array_keys($this->getIndexInfoByAlias($alias));
}

            
getMapping() public method
public getMapping( string $index '_all', string $type null ): mixed
$index string
$type string

                public function getMapping($index = '_all', $type = null)
{
    $url = [$index, '_mapping'];
    if ($type !== null) {
        $url[] = $type;
    }
    return $this->db->get($url);
}

            
getSource() public method

Gets a documents _source from the index (>=v0.90.1)

See also http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html#_source.

public getSource( mixed $index, mixed $type, mixed $id ): mixed
$index mixed
$type mixed
$id mixed

                public function getSource($index, $type, $id)
{
    return $this->db->get([$index, $type, $id]);
}

            
getTemplate() public method
public getTemplate( mixed $name ): mixed
$name mixed

                public function getTemplate($name)
{
    return $this->db->get(['_template', $name]);
}

            
indexExists() public method
public indexExists( mixed $index ): mixed
$index mixed

                public function indexExists($index)
{
    return $this->db->head([$index]);
}

            
insert() public method
public insert( string $index, string $type, string|array $data, null $id null, array $options = [] ): mixed
$index string
$type string
$data string|array

Json string or array of data to store

$id null

The documents id. If not specified Id will be automatically chosen

$options array

                public function insert($index, $type, $data, $id = null, $options = [])
{
    if (empty($data)) {
        $body = '{}';
    } else {
        $body = is_array($data) ? Json::encode($data) : $data;
    }
    if ($id !== null) {
        return $this->db->put([$index, $type, $id], $options, $body);
    } else {
        return $this->db->post([$index, $type], $options, $body);
    }
}

            
mget() public method

Gets multiple documents from the index

TODO allow specifying type and index + fields

See also http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-get.html.

public mget( mixed $index, mixed $type, mixed $ids, array $options = [] ): mixed
$index mixed
$type mixed
$ids mixed
$options array

                public function mget($index, $type, $ids, $options = [])
{
    $body = Json::encode(['ids' => array_values($ids)]);
    return $this->db->get([$index, $type, '_mget'], $options, $body);
}

            
openIndex() public method
public openIndex( mixed $index ): mixed
$index mixed

                public function openIndex($index)
{
    return $this->db->post([$index, '_open']);
}

            
refreshIndex() public method
public refreshIndex( mixed $index ): mixed
$index mixed

                public function refreshIndex($index)
{
    return $this->db->post([$index, '_refresh']);
}

            
removeAlias() public method
public removeAlias( string $index, string $alias ): boolean
$index string
$alias string

                public function removeAlias($index, $alias)
{
    return (bool)$this->db->delete([$index, '_alias', $alias]);
}

            
scroll() public method (available since version 2.0.4)
public scroll( array $options = [] ): mixed
$options array

                public function scroll($options = [])
{
   return $this->db->get(['_search', 'scroll'], $options);
}

            
search() public method

Sends a request to the _search API and returns the result

public search( array $options = [] ): mixed
$options array

                public function search($options = [])
{
    $query = $this->queryParts;
    if (empty($query)) {
        $query = '{}';
    }
    if (is_array($query)) {
        $query = Json::encode($query);
    }
    $url = [$this->index !== null ? $this->index : '_all'];
    if ($this->type !== null) {
        $url[] = $this->type;
    }
    $url[] = '_search';
    return $this->db->get($url, array_merge($this->options, $options), $query);
}

            
setMapping() public method
public setMapping( string $index, string $type, string|array $mapping, array $options = [] ): mixed
$index string
$type string
$mapping string|array
$options array

                public function setMapping($index, $type, $mapping, $options = [])
{
    $body = $mapping !== null ? (is_string($mapping) ? $mapping : Json::encode($mapping)) : null;
    return $this->db->put([$index, '_mapping', $type], $options, $body);
}

            
suggest() public method

Sends a request to the _suggest API and returns the result

See also http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html.

public suggest( string|array $suggester, array $options = [] ): mixed
$suggester string|array

The suggester body

$options array

                public function suggest($suggester, $options = [])
{
    if (empty($suggester)) {
        $suggester = '{}';
    }
    if (is_array($suggester)) {
        $suggester = Json::encode($suggester);
    }
    $url = [
        $this->index !== null ? $this->index : '_all',
        '_suggest'
    ];
    return $this->db->post($url, array_merge($this->options, $options), $suggester);
}

            
typeExists() public method
public typeExists( mixed $index, mixed $type ): mixed
$index mixed
$type mixed

                public function typeExists($index, $type)
{
    return $this->db->head([$index, $type]);
}

            
update() public method
public update( mixed $index, mixed $type, mixed $id, mixed $data, array $options = [] ): mixed
$index mixed
$type mixed
$id mixed
$data mixed
$options array

                public function update($index, $type, $id, $data, $options = [])
{
    $body = [
        'doc' => empty($data) ? new \stdClass() : $data,
    ];
    if (isset($options["detect_noop"])) {
        $body["detect_noop"] = $options["detect_noop"];
        unset($options["detect_noop"]);
    }
    return $this->db->post([$index, $type, $id, '_update'], $options, Json::encode($body));
}

            
updateAnalyzers() public method (available since version 2.0.4)

Define new analyzers for the index.

For example if content analyzer hasn’t been defined on "myindex" yet you can use the following commands to add it:

 $setting = [
     'analysis' => [
         'analyzer' => [
             'ngram_analyzer_with_filter' => [
                 'tokenizer' => 'ngram_tokenizer',
                 'filter' => 'lowercase, snowball'
             ],
         ],
         'tokenizer' => [
             'ngram_tokenizer' => [
                 'type' => 'nGram',
                 'min_gram' => 3,
                 'max_gram' => 10,
                 'token_chars' => ['letter', 'digit', 'whitespace', 'punctuation', 'symbol']
             ],
         ],
     ]
];
$elasticQuery->createCommand()->updateAnalyzers('myindex', $setting);

See also https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html#update-settings-analysis.

public updateAnalyzers( string $index, string|array $setting, array $options = [] ): mixed
$index string
$setting string|array
$options array

URL options

                public function updateAnalyzers($index, $setting, $options = [])
{
    $this->closeIndex($index);
    $result = $this->updateSettings($index, $setting, $options);
    $this->openIndex($index);
    return $result;
}

            
updateSettings() public method (available since version 2.0.4)

Change specific index level settings in real time.

Note that update analyzers required to close() the index first and open() it after the changes are made, use updateAnalyzers() for it.

See also http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-update-settings.html.

public updateSettings( string $index, string|array $setting, array $options = [] ): mixed
$index string
$setting string|array
$options array

URL options

                public function updateSettings($index, $setting, $options = [])
{
    $body = $setting !== null ? (is_string($setting) ? $setting : Json::encode($setting)) : null;
    return $this->db->put([$index, '_settings'], $options, $body);
}