public function isOk() { try { $health = $this->elasticsearch->cluster()->health(); } catch (\Exception $ex) { $this->logger->error("Elasticsearch cluster status could not be retrieved"); return false; } if (!is_array($health) || !array_key_exists('status', $health)) { $this->logger->error("Elasticsearch cluster status was not returned in the expected format"); return false; } $clusterStatus = $health['status']; if ($clusterStatus !== 'green') { $this->logger->warning("Elasticsearch cluster status: {$clusterStatus}", ['clusterHealth' => $health]); return false; } return true; }
/** * @param ShopIndex $index */ private function updateSettings(ShopIndex $index) { $this->client->cluster()->health(['wait_for_status' => 'yellow']); $this->client->indices()->close(['index' => $index->getName()]); foreach ($this->settings as $setting) { $settings = $setting->get($index->getShop()); if (!$settings) { continue; } $this->client->indices()->putSettings(['index' => $index->getName(), 'body' => $settings]); } $this->client->indices()->open(['index' => $index->getName()]); $this->client->indices()->refresh(['index' => $index->getName()]); $this->client->cluster()->health(['wait_for_status' => 'yellow']); }