/**
  * @internal
  **/
 public static function _query($args, $pageIndex, $size, $sortByDate = false)
 {
     $query = new \Elastica\Query($args);
     $query->setFrom($pageIndex * $size);
     $query->setSize($size);
     $query->setFields(array('id'));
     $query = Config::apply_filters('searcher_query', $query);
     try {
         $index = Indexer::_index(false);
         $search = new \Elastica\Search($index->getClient());
         $search->addIndex($index);
         if (!$query->hasParam('sort')) {
             if ($sortByDate) {
                 $query->addSort(array('post_date' => 'desc'));
             } else {
                 $query->addSort('_score');
             }
         }
         $search = Config::apply_filters('searcher_search', $search, $query);
         $results = $search->search($query);
         return self::_parseResults($results);
     } catch (\Exception $ex) {
         error_log($ex);
         Config::do_action('searcher_exception', $ex);
         return null;
     }
 }