# getConfigFactory()->makeConfig( 'CirrusSearch' ); $conn = CirrusSearch\Connection::getPool( $config, 'codfw' ); $scorer = CirrusSearch\BuildDocument\Completion\SuggestScoringMethodFactory::getScoringMethod( 'popqual' ); $builder = new CirrusSearch\BuildDocument\Completion\SuggestBuilder( $scorer, [] ); $sourceIndex = $conn->getIndex( 'cawiki', 'content' ); $query = new \Elastica\Query(); $query->setSource(['includes' => $builder->getRequiredFields()]); $pageAndNs = new \Elastica\Query\BoolQuery(); $pageAndNs->addShould( new Elastica\Query\Term(["namespace" => NS_MAIN])); $pageAndNs->addShould( new Elastica\Query\Term(["redirect.namespace" => NS_MAIN])); $pageAndNs->addMust(new \Elastica\Query\Type('page')); $bool = new Elastica\Query\BoolQuery(); $bool->addFilter($pageAndNs); $query->setQuery($bool); $search = new \Elastica\Search( $conn->getClient() ); $search->setQuery($query); $search->addIndex($sourceIndex); $query->setSize(100); $scroll = new \Elastica\Scroll( $search, '15m' ); $esTook = 0; $numDocs = 0; $numBatch = 0; $start = microtime(true); foreach ( $scroll as $results ) {echo "."; $esTook += $results->getTotalTime(); $numDocs += count( $results ); $numBatch++; } $took = microtime(true) - $start; echo "IP: $IP\n"; echo "Took: $took\n"; echo "Elastic took: $esTook\n"; echo "Docs seen: $numDocs\n"; echo "Num batches: $numBatch\n";