You usually do not instantiate BatchQueryResult directly. Instead, you obtain it by
calling [[Query::batch()]] or [[Query::each()]]. Because BatchQueryResult implements the [[\Iterator]] interface,
you can iterate it to obtain a batch of data in each iteration.
Batch size is determined by the [[Query::$limit]] setting. [[Query::$offset]] setting is ignored.
New batches will be obtained until the server runs out of results.
If [[Query::$orderBy]] parameter is not set, batches will be processed using the highly efficient "scan" mode.
In this case, [[Query::$limit]] setting determines batch size per shard.
See elasticsearch guide
for more information.
Example:
php
$query = (new Query)->from('user');
foreach ($query->batch() as $i => $users) {
$users represents the rows in the $i-th batch
}
foreach ($query->each() as $user) {
}