Loading

Iterators

The PHP client includes helpers for iterating through results by page or by hits.

Use the SearchResponseIterator to iterate page by page in a search result using pagination.

Here’s an example:

use Elastic\Elasticsearch\Helper\Iterators\SearchResponseIterator; $search_params = [ 'scroll' => '5m', 'index' => '<name of index>', 'size' => 100, 'body' => [ 'query' => [ 'match_all' => new StdClass ] ] ]; // $client is Elasticsearch\Client instance $pages = new SearchResponseIterator($client, $search_params); // Sample usage of iterating over page results foreach($pages as $page) { // do something with hit e.g. copy its data to another index // e.g. prints the number of document per page (100) echo count($page['hits']['hits']), PHP_EOL; } 
  1. period to retain the search context
  2. here the index name
  3. 100 results per page
  4. {} in JSON

Use the SearchHitIterator to iterate in a SearchResponseIterator without worrying about pagination.

Here’s an example:

use Elastic\Elasticsearch\Helper\Iterators\SearchHitIterator; use Elastic\Elasticsearch\Helper\Iterators\SearchResponseIterator; $search_params = [ 'scroll' => '5m', 'index' => '<name of index>', 'size' => 100, 'body' => [ 'query' => [ 'match_all' => new StdClass ] ] ]; // $client is Elasticsearch\Client instance $pages = new SearchResponseIterator($client, $search_params); $hits = new SearchHitIterator($pages); // Sample usage of iterating over hits foreach($hits as $hit) { // do something with hit e.g. write to CSV, update a database, etc // e.g. prints the document id echo $hit['_id'], PHP_EOL; } 
  1. period to retain the search context
  2. here the index name
  3. 100 results per page
  4. {} in JSON