%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/ongr/elasticsearch-dsl/docs/Query/Geo/ |
| Current File : /home/graphicd/public_html/vebto/vendor/ongr/elasticsearch-dsl/docs/Query/Geo/GeoBoundingBox.md |
# Geo Bounding Box Query
> More info about geo bounding box query is in the [official elasticsearch docs][1]
A query allowing to filter hits based on a point location using a bounding box. Assuming the following indexed document:
## Simple example
```JSON
{
"query": {
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_bounding_box" : {
"pin.location" : {
"top_left" : {
"lat" : 40.73,
"lon" : -74.1
},
"bottom_right" : {
"lat" : 40.01,
"lon" : -71.12
}
}
}
}
}
}
}
```
In DSL:
```php
$search = new Search();
$location = [
['lat' => 40.73, 'lon' => -74.1],
[ 'lat' => 40.01, 'lon' => -71.12],
];
$boolQuery = new BoolQuery();
$boolQuery->add(new MatchAllQuery());
$geoQuery = new GeoBoundingBoxQuery('pin.location', $location);
$boolQuery->add($geoQuery, BoolQuery::FILTER);
$search->addQuery($boolQuery);
$queryArray = $search->toArray();
```
> This query accepts an array with either 2 or 4 elements as its second parameter,
failing to meet this criteria will result in an error!
Alternatively the vertices of the bounding box can be set separately:
```json
{
"query": {
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_bounding_box" : {
"pin.location" : {
"top" : 40.73,
"left" : -74.1,
"bottom" : 40.01,
"right" : -71.12
}
}
}
}
}
}
```
Now via DSL:
```php
$search = new Search();
$location = [40.73, -74.1, 40.01, -71.12];
$boolQuery = new BoolQuery();
$boolQuery->add(new MatchAllQuery());
$geoQuery = new GeoBoundingBoxQuery('pin.location', $location);
$boolQuery->add($geoQuery, BoolQuery::FILTER);
$search->addQuery($boolQuery);
$queryArray = $search->toArray();
```
[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-bounding-box-query.html