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();
         }
     }
 }