New

The executive guide to generative AI

Read more
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