logger = $logger; $this->clientFactory = $clientFactory; $this->clientConfig = $clientConfig; } /** * Get shared connection * * @param array $options * @throws \RuntimeException * @return Elasticsearch * @since 100.1.0 */ public function getConnection($options = []) { if (!$this->client) { $this->connect($options); } return $this->client; } /** * Connect to Elasticsearch client with default options * * @param array $options * @throws \RuntimeException * @return void */ private function connect($options) { try { $this->client = $this->clientFactory->create($this->clientConfig->prepareClientOptions($options)); } catch (\Exception $e) { $this->logger->critical($e); throw new \RuntimeException('Elasticsearch client is not set.'); } } }