Beispiel #1
0
 public function createIndex()
 {
     // Remove old unfinished indices
     foreach ($this->_client->getStatus()->getIndicesWithAlias($this->getIndex()->getName() . '.tmp') as $index) {
         /** @var Elastica\Index $index */
         $index->delete();
     }
     // Set current index to read-only
     foreach ($this->_client->getStatus()->getIndicesWithAlias($this->getIndex()->getName()) as $index) {
         $index->getSettings()->setBlocksWrite(true);
     }
     // Create new index and switch alias
     $version = time();
     /** @var $indexNew CM_Elasticsearch_Type_Abstract */
     $indexNew = new static($this->_client, $version);
     $indexNew->_createIndex(true);
     $indexNew->getIndex()->addAlias($this->getIndex()->getName() . '.tmp');
     $settings = $indexNew->getIndex()->getSettings();
     $refreshInterval = $settings->getRefreshInterval();
     //$mergeFactor = $settings->getMergePolicy('merge_factor');
     //$settings->setMergePolicy('merge_factor', 50);
     $settings->setRefreshInterval('-1');
     $indexNew->update(null, true);
     //$settings->setMergePolicy('merge_factor', $mergeFactor);
     $settings->setRefreshInterval($refreshInterval);
     $indexNew->getIndex()->addAlias($this->getIndex()->getName());
     $indexNew->getIndex()->removeAlias($this->getIndex()->getName() . '.tmp');
     // Remove old index
     foreach ($this->_client->getStatus()->getIndicesWithAlias($this->getIndex()->getName()) as $index) {
         /** @var Elastica\Index $index */
         if ($index->getName() != $indexNew->getIndex()->getName()) {
             $index->delete();
         }
     }
 }
 /**
  * Update Alias
  *
  * @param $name
  * @param $index
  */
 public static function updateAlias($name, $index)
 {
     $instance = new static();
     $client = $instance->getElasticSearchClient();
     $old_index = $instance->getIndex($name);
     $instance->deleteAlias($name, $old_index);
     $instance->createAlias($name, $index);
 }
 /**
  * Update Alias
  *
  * @param $name
  * @param $index
  */
 public static function updateAlias($name, $index)
 {
     $instance = new static();
     $client = $instance->getElasticSearchClient();
     $old_index = $instance->getIndex($name);
     $params = ['body' => ['actions' => [['add' => ['index' => $index, 'alias' => $name]], ['remove' => ['index' => $old_index, 'alias' => $name]]]]];
     $client->indices()->updateAliases($params);
 }