Elasticsearch supports number of custom parameters which can be added to your query. Detailed explanation of each parameter can be found at [official documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#_parameters_5)
## Setting `timeout` parameter
This option allows user to specify timeout for query execution in ["Time units"](https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#time-units).
Following code
```php
$search=newSearch();
$search->setTimeout('5s');
```
would generate the query like this:
```json
{
"timeout":"5s"
}
```
## Setting `from` and `size` parameters
These parameters are usually used for pagination.
Following code
```php
$search=newSearch();
$search->setSize(25);
$search->setFrom(50);
```
would generate the query like this:
```json
{
"size":25,
"from":50
}
```
## Setting `terminate_after` parameter
This parameter can limit how many documents can be fetched from shard before query execution is terminated.
Following code
```php
$search=newSearch();
$search->setTerminateAfter(1000);
```
would generate the query like this:
```json
{
"terminate_after":1000
}
```
## Setting `search_type` and `request_cache` parameters
These parameters are different from previous ones because they have to be passed not in query's body but as query string parameters.
Following code
```php
$search=newSearch();
$search->setSearchType('dfs_query_then_fetch');
$search->setRequestCache(true);
```
would generate query string with `?search_type=dfs_query_then_fetch&request_cache=true`.