Wallmander\ElasticsearchIndexer\Model\Indexer::reindex PHP Method

reindex() public method

Called in admin to reindex all posts in all blogs.
public reindex ( integer $site, integer $from, integer $size ) : array
$site integer
$from integer
$size integer
return array
    public function reindex($site, $from, $size)
    {
        add_filter('esi_skip_query_integration', '__return_true');
        WordPress::switchToBlog($site);
        $this->setBlog($site);
        Config::setOption('is_indexing', time());
        Config::setOption('user_index_version', Config::option('plugin_index_version'));
        list($indexed, $total) = $this->reindexBlog($from, $size);
        if ($indexed >= $total) {
            Config::setOption('is_indexing', false);
            Elasticsearch::optimize();
        }
        WordPress::restoreCurrentBlog();
        $this->setBlog();
        return [$indexed, $total];
    }

Usage Example

示例#1
0
 /**
  * Admin reindex, requested by the index page.
  */
 public static function ajaxReindex()
 {
     if (!isset($_POST['site']) || !isset($_POST['from']) || empty($_POST['size'])) {
         die('invalid request');
     }
     $site = (int) $_POST['site'];
     $from = (int) $_POST['from'];
     $size = (int) $_POST['size'];
     try {
         $indexer = new Indexer();
         list($indexed, $total) = $indexer->reindex($site, $from, $size);
         $data = (object) ['success' => false, 'indexed' => $indexed, 'total' => $total];
         $data->success = true;
         header('Content-Type: application/json');
         echo json_encode($data);
     } catch (Exception $e) {
         $data = (object) ['success' => false, 'message' => $e->getMessage()];
         header('Content-Type: application/json');
         echo json_encode($data);
     }
     die;
 }