Skip to content

Commit c61f58f

Browse files
committed
Merge pull request #28 from dmyers/elasticsearch-location
Added location support to elasticsearch driver using using geopoint
2 parents dba8569 + dfc6135 commit c61f58f

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/Mmanos/Search/Index/Elasticsearch.php

+15-6
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function newQuery()
5050
{
5151
return array(
5252
'index' => $this->name,
53-
'body' => array('query' => array('bool' => array())),
53+
'body' => array('query' => array()),
5454
);
5555
}
5656

@@ -71,10 +71,6 @@ public function newQuery()
7171
*/
7272
public function addConditionToQuery($query, array $condition)
7373
{
74-
if (array_get($condition, 'lat')) {
75-
return $query;
76-
}
77-
7874
$value = trim(array_get($condition, 'value'));
7975
$field = array_get($condition, 'field', '_all');
8076

@@ -107,6 +103,19 @@ public function addConditionToQuery($query, array $condition)
107103
'min_similarity' => $fuzziness,
108104
);
109105
}
106+
elseif (array_get($condition, 'lat')) {
107+
$definition = array(
108+
'distance' => $condition['distance'].'m',
109+
'_geoloc' => array(
110+
'lat' => $condition['lat'],
111+
'lon' => $condition['long'],
112+
),
113+
);
114+
115+
$query['body']['query']['filtered']['filter']['geo_distance'] = $definition;
116+
117+
return $query;
118+
}
110119
else {
111120
$is_phrase = (!empty($condition['phrase']) || !empty($condition['filter']));
112121
$match_type = 'multi_match';
@@ -117,7 +126,7 @@ public function addConditionToQuery($query, array $condition)
117126
);
118127
}
119128

120-
$query['body']['query']['bool'][$occur][][$match_type] = $definition;
129+
$query['body']['query']['filtered']['query']['bool'][$occur][][$match_type] = $definition;
121130

122131
return $query;
123132
}

0 commit comments

Comments
 (0)