@@ -50,7 +50,7 @@ public function newQuery()
50
50
{
51
51
return array (
52
52
'index ' => $ this ->name ,
53
- 'body ' => array ('query ' => array (' bool ' => array () )),
53
+ 'body ' => array ('query ' => array ()),
54
54
);
55
55
}
56
56
@@ -71,10 +71,6 @@ public function newQuery()
71
71
*/
72
72
public function addConditionToQuery ($ query , array $ condition )
73
73
{
74
- if (array_get ($ condition , 'lat ' )) {
75
- return $ query ;
76
- }
77
-
78
74
$ value = trim (array_get ($ condition , 'value ' ));
79
75
$ field = array_get ($ condition , 'field ' , '_all ' );
80
76
@@ -107,6 +103,19 @@ public function addConditionToQuery($query, array $condition)
107
103
'min_similarity ' => $ fuzziness ,
108
104
);
109
105
}
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
+ }
110
119
else {
111
120
$ is_phrase = (!empty ($ condition ['phrase ' ]) || !empty ($ condition ['filter ' ]));
112
121
$ match_type = 'multi_match ' ;
@@ -117,7 +126,7 @@ public function addConditionToQuery($query, array $condition)
117
126
);
118
127
}
119
128
120
- $ query ['body ' ]['query ' ]['bool ' ][$ occur ][][$ match_type ] = $ definition ;
129
+ $ query ['body ' ]['query ' ]['filtered ' ][ ' query ' ][ ' bool ' ][$ occur ][][$ match_type ] = $ definition ;
121
130
122
131
return $ query ;
123
132
}
0 commit comments