%PDF- %PDF-
Direktori : /www/varak.net/wiki.varak.net/extensions/Elastica/vendor/ruflin/elastica/lib/Elastica/ |
Current File : /www/varak.net/wiki.varak.net/extensions/Elastica/vendor/ruflin/elastica/lib/Elastica/Status.php |
<?php namespace Elastica; use Elastica\Exception\ResponseException; /** * Elastica general status. * * @author Nicolas Ruflin <spam@ruflin.com> * * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-status.html */ class Status { /** * Contains all status infos. * * @var \Elastica\Response Response object */ protected $_response = null; /** * Data. * * @var array Data */ protected $_data = null; /** * Client object. * * @var \Elastica\Client Client object */ protected $_client = null; /** * Constructs Status object. * * @param \Elastica\Client $client Client object */ public function __construct(Client $client) { $this->_client = $client; } /** * Returns status data. * * @return array Status data */ public function getData() { if (is_null($this->_data)) { $this->refresh(); } return $this->_data; } /** * Returns a list of the existing index names. * * @return array Index names list */ public function getIndexNames() { $data = $this->getData(); return array_keys($data['indices']); } /** * Checks if the given index exists. * * @param string $name Index name to check * * @return bool True if index exists */ public function indexExists($name) { return in_array($name, $this->getIndexNames()); } /** * Checks if the given alias exists. * * @param string $name Alias name * * @return bool True if alias exists */ public function aliasExists($name) { return count($this->getIndicesWithAlias($name)) > 0; } /** * Returns an array with all indices that the given alias name points to. * * @param string $alias Alias name * * @return array|\Elastica\Index[] List of Elastica\Index */ public function getIndicesWithAlias($alias) { $response = null; try { $response = $this->_client->request('/_alias/'.$alias); } catch (ResponseException $e) { $transferInfo = $e->getResponse()->getTransferInfo(); // 404 means the index alias doesn't exist which means no indexes have it. if ($transferInfo['http_code'] === 404) { return array(); } // If we don't have a 404 then this is still unexpected so rethrow the exception. throw $e; } $indices = array(); foreach ($response->getData() as $name => $unused) { $indices[] = new Index($this->_client, $name); } return $indices; } /** * Returns response object. * * @return \Elastica\Response Response object */ public function getResponse() { if (is_null($this->_response)) { $this->refresh(); } return $this->_response; } /** * Return shards info. * * @return array Shards info */ public function getShards() { $data = $this->getData(); return $data['shards']; } /** * Refresh status object. */ public function refresh() { $path = '_stats'; $this->_response = $this->_client->request($path, Request::GET); $this->_data = $this->getResponse()->getData(); } }