diff --git a/src/Elasticsearch/Client.php b/src/Elasticsearch/Client.php index 9237ee039..180e3fb3c 100644 --- a/src/Elasticsearch/Client.php +++ b/src/Elasticsearch/Client.php @@ -14,6 +14,7 @@ use Elasticsearch\Common\Exceptions\RoutingMissingException; use Elasticsearch\Common\Exceptions\UnexpectedValueException; use Elasticsearch\Endpoints; +use Elasticsearch\Namespaces\CatNamespace; use Elasticsearch\Namespaces\ClusterNamespace; use Elasticsearch\Namespaces\IndicesNamespace; use Elasticsearch\Namespaces\NodesNamespace; @@ -64,6 +65,11 @@ class Client */ protected $snapshot; + /** + * @var CatNamespace + */ + protected $cat; + /** @var callback */ protected $dicEndpoints; @@ -987,6 +993,17 @@ public function snapshot() } + /** + * Operate on the Cat namespace of commands + * + * @return SnapshotNamespace + */ + public function cat() + { + return $this->cat; + } + + /** * Sets up the DIC parameter object * diff --git a/src/Elasticsearch/Common/DICBuilder.php b/src/Elasticsearch/Common/DICBuilder.php index 9b2c4e65d..331d110bf 100644 --- a/src/Elasticsearch/Common/DICBuilder.php +++ b/src/Elasticsearch/Common/DICBuilder.php @@ -9,6 +9,7 @@ use Elasticsearch\Common\Exceptions\RuntimeException; use Elasticsearch\Endpoints; +use Elasticsearch\Namespaces\CatNamespace; use Elasticsearch\Namespaces\ClusterNamespace; use Elasticsearch\Namespaces\IndicesNamespace; use Elasticsearch\Namespaces\NodesNamespace; @@ -171,6 +172,7 @@ private function setSharedDICObjects($hosts) $this->setClusterNamespaceObj(); $this->setIndicesNamespaceObj(); $this->setNodesNamespaceObj(); + $this->setCatNamespaceObj(); $this->setSnapshotNamespaceObj(); $this->setSharedConnectionParamsObj(); $this->setCurlMultihandle(); @@ -289,6 +291,16 @@ function ($dicParams) { ); } + private function setCatNamespaceObj() + { + $this->dic['catNamespace'] = $this->dic->share( + function ($dicParams) { + /** @var Pimple $dicParams */ + return new CatNamespace($dicParams['transport'], $dicParams['endpoint']); + } + ); + } + private function setSharedConnectionParamsObj() { diff --git a/src/Elasticsearch/Namespaces/CatNamespace.php b/src/Elasticsearch/Namespaces/CatNamespace.php new file mode 100644 index 000000000..1b127769f --- /dev/null +++ b/src/Elasticsearch/Namespaces/CatNamespace.php @@ -0,0 +1,321 @@ + + * @license http://www.apache.org/licenses/LICENSE-2.0 Apache2 + * @link http://elasticsearch.org + */ +class CatNamespace extends AbstractNamespace +{ + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function aliases($params = array()) + { + $name = $this->extractArgument($params, 'name'); + + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Aliases $endpoint */ + $endpoint = $endpointBuilder('Cat\Aliases'); + $endpoint->setName($name); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * ['bytes'] = (enum) The unit in which to display byte values + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function allocation($params = array()) + { + $nodeID = $this->extractArgument($params, 'nodeID'); + + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Allocation $endpoint */ + $endpoint = $endpointBuilder('Cat\Allocation'); + $endpoint->setNodeID($nodeID); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function count($params = array()) + { + $index = $this->extractArgument($params, 'index'); + + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Count $endpoint */ + $endpoint = $endpointBuilder('Cat\Count'); + $endpoint->setIndex($index); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * ['ts'] = (bool) Set to false to disable timestamping + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function health($params = array()) + { + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Health $endpoint */ + $endpoint = $endpointBuilder('Cat\Health'); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['help'] = (bool) Return help information + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function help($params = array()) + { + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Help $endpoint */ + $endpoint = $endpointBuilder('Cat\Help'); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * ['bytes'] = (enum) The unit in which to display byte values + * ['pri'] = (bool) Set to true to return stats only for primary shards + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function indices($params = array()) + { + $index = $this->extractArgument($params, 'index'); + + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Indices $endpoint */ + $endpoint = $endpointBuilder('Cat\Indices'); + $endpoint->setIndex($index); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function master($params = array()) + { + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Master $endpoint */ + $endpoint = $endpointBuilder('Cat\Master'); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function nodes($params = array()) + { + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Nodes $endpoint */ + $endpoint = $endpointBuilder('Cat\Nodes'); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function pendingTasks($params = array()) + { + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\PendingTasks $endpoint */ + $endpoint = $endpointBuilder('Cat\PendingTasks'); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * ['bytes'] = (enum) The unit in which to display byte values + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function recovery($params = array()) + { + $index = $this->extractArgument($params, 'index'); + + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Recovery $endpoint */ + $endpoint = $endpointBuilder('Cat\Recovery'); + $endpoint->setIndex($index); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function shards($params = array()) + { + $index = $this->extractArgument($params, 'index'); + + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\Shards $endpoint */ + $endpoint = $endpointBuilder('Cat\Shards'); + $endpoint->setIndex($index); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + + /** + * $params['local'] = (bool) Return local information, do not retrieve the state from master node (default: false) + * ['master_timeout'] = (time) Explicit operation timeout for connection to master node + * ['h'] = (list) Comma-separated list of column names to display + * ['help'] = (bool) Return help information + * ['v'] = (bool) Verbose mode. Display column headers + * ['full_id'] = (bool) Enables displaying the complete node ids + * + * @param $params array Associative array of parameters + * + * @return array + */ + public function threadPool($params = array()) + { + $index = $this->extractArgument($params, 'index'); + + /** @var callback $endpointBuilder */ + $endpointBuilder = $this->dicEndpoints; + + /** @var \Elasticsearch\Endpoints\Cat\ThreadPool $endpoint */ + $endpoint = $endpointBuilder('Cat\ThreadPool'); + $endpoint->setIndex($index); + $endpoint->setParams($params); + $response = $endpoint->performRequest(); + return $response['data']; + } + +} \ No newline at end of file