2
2
3
3
namespace ScoutEngines \Elasticsearch ;
4
4
5
- use Laravel \Scout \Builder ;
6
- use Laravel \Scout \Engines \Engine ;
7
5
use Elasticsearch \Client as Elastic ;
8
6
use Illuminate \Database \Eloquent \Collection ;
9
- use Illuminate \Support \Collection as BaseCollection ;
7
+ use Laravel \Scout \Builder ;
8
+ use Laravel \Scout \Engines \Engine ;
10
9
11
10
class ElasticsearchEngine extends Engine
12
11
{
@@ -20,7 +19,8 @@ class ElasticsearchEngine extends Engine
20
19
/**
21
20
* Create a new engine instance.
22
21
*
23
- * @param \Elasticsearch\Client $elastic
22
+ * @param \Elasticsearch\Client $elastic
23
+ *
24
24
* @return void
25
25
*/
26
26
public function __construct (Elastic $ elastic )
@@ -31,7 +31,8 @@ public function __construct(Elastic $elastic)
31
31
/**
32
32
* Update the given model in the index.
33
33
*
34
- * @param Collection $models
34
+ * @param Collection $models
35
+ *
35
36
* @return void
36
37
*/
37
38
public function update ($ models )
@@ -41,14 +42,14 @@ public function update($models)
41
42
$ models ->each (function ($ model ) use (&$ params ) {
42
43
$ params ['body ' ][] = [
43
44
'update ' => [
44
- '_id ' => $ model ->getKey (),
45
+ '_id ' => $ model ->getKey (),
45
46
'_index ' => $ model ->searchableAs (),
46
- '_type ' => $ model ->searchableAs (),
47
- ]
47
+ '_type ' => $ model ->searchableAs (),
48
+ ],
48
49
];
49
50
$ params ['body ' ][] = [
50
- 'doc ' => $ model ->toSearchableArray (),
51
- 'doc_as_upsert ' => true
51
+ 'doc ' => $ model ->toSearchableArray (),
52
+ 'doc_as_upsert ' => true ,
52
53
];
53
54
});
54
55
@@ -58,7 +59,8 @@ public function update($models)
58
59
/**
59
60
* Remove the given model from the index.
60
61
*
61
- * @param Collection $models
62
+ * @param Collection $models
63
+ *
62
64
* @return void
63
65
*/
64
66
public function delete ($ models )
@@ -68,10 +70,10 @@ public function delete($models)
68
70
$ models ->each (function ($ model ) use (&$ params ) {
69
71
$ params ['body ' ][] = [
70
72
'delete ' => [
71
- '_id ' => $ model ->getKey (),
73
+ '_id ' => $ model ->getKey (),
72
74
'_index ' => $ model ->searchableAs (),
73
- '_type ' => $ model ->searchableAs (),
74
- ]
75
+ '_type ' => $ model ->searchableAs (),
76
+ ],
75
77
];
76
78
});
77
79
@@ -81,56 +83,59 @@ public function delete($models)
81
83
/**
82
84
* Perform the given search on the engine.
83
85
*
84
- * @param Builder $builder
86
+ * @param Builder $builder
87
+ *
85
88
* @return mixed
86
89
*/
87
90
public function search (Builder $ builder )
88
91
{
89
92
return $ this ->performSearch ($ builder , array_filter ([
90
93
'numericFilters ' => $ this ->filters ($ builder ),
91
- 'size ' => $ builder ->limit ,
94
+ 'size ' => $ builder ->limit ,
92
95
]));
93
96
}
94
97
95
98
/**
96
99
* Perform the given search on the engine.
97
100
*
98
- * @param Builder $builder
99
- * @param int $perPage
100
- * @param int $page
101
+ * @param Builder $builder
102
+ * @param int $perPage
103
+ * @param int $page
104
+ *
101
105
* @return mixed
102
106
*/
103
107
public function paginate (Builder $ builder , $ perPage , $ page )
104
108
{
105
109
$ result = $ this ->performSearch ($ builder , [
106
110
'numericFilters ' => $ this ->filters ($ builder ),
107
- 'from ' => (($ page * $ perPage ) - $ perPage ),
108
- 'size ' => $ perPage ,
111
+ 'from ' => (($ page * $ perPage ) - $ perPage ),
112
+ 'size ' => $ perPage ,
109
113
]);
110
114
111
- $ result ['nbPages ' ] = $ result ['hits ' ]['total ' ]/ $ perPage ;
115
+ $ result ['nbPages ' ] = $ result ['hits ' ]['total ' ] / $ perPage ;
112
116
113
117
return $ result ;
114
118
}
115
119
116
120
/**
117
121
* Perform the given search on the engine.
118
122
*
119
- * @param Builder $builder
120
- * @param array $options
123
+ * @param Builder $builder
124
+ * @param array $options
125
+ *
121
126
* @return mixed
122
127
*/
123
128
protected function performSearch (Builder $ builder , array $ options = [])
124
129
{
125
130
$ params = [
126
131
'index ' => $ builder ->index ?: $ builder ->model ->searchableAs (),
127
- 'body ' => [
132
+ 'body ' => [
128
133
'query ' => [
129
134
'bool ' => [
130
- 'must ' => [['query_string ' => [ 'query ' => "* {$ builder ->query }* " ]]]
131
- ]
132
- ]
133
- ]
135
+ 'must ' => [['query_string ' => ['query ' => "* {$ builder ->query }* " ]]],
136
+ ],
137
+ ],
138
+ ],
134
139
];
135
140
136
141
if ($ sort = $ this ->sort ($ builder )) {
@@ -167,7 +172,8 @@ protected function performSearch(Builder $builder, array $options = [])
167
172
/**
168
173
* Get the filter array for the query.
169
174
*
170
- * @param Builder $builder
175
+ * @param Builder $builder
176
+ *
171
177
* @return array
172
178
*/
173
179
protected function filters (Builder $ builder )
@@ -184,7 +190,8 @@ protected function filters(Builder $builder)
184
190
/**
185
191
* Pluck and return the primary keys of the given results.
186
192
*
187
- * @param mixed $results
193
+ * @param mixed $results
194
+ *
188
195
* @return \Illuminate\Support\Collection
189
196
*/
190
197
public function mapIds ($ results )
@@ -195,8 +202,9 @@ public function mapIds($results)
195
202
/**
196
203
* Map the given results to instances of the given model.
197
204
*
198
- * @param mixed $results
199
- * @param \Illuminate\Database\Eloquent\Model $model
205
+ * @param mixed $results
206
+ * @param \Illuminate\Database\Eloquent\Model $model
207
+ *
200
208
* @return Collection
201
209
*/
202
210
public function map ($ results , $ model )
@@ -221,7 +229,8 @@ public function map($results, $model)
221
229
/**
222
230
* Get the total count from a raw result returned by the engine.
223
231
*
224
- * @param mixed $results
232
+ * @param mixed $results
233
+ *
225
234
* @return int
226
235
*/
227
236
public function getTotalCount ($ results )
@@ -232,13 +241,14 @@ public function getTotalCount($results)
232
241
/**
233
242
* Generates the sort if theres any.
234
243
*
235
- * @param Builder $builder
244
+ * @param Builder $builder
245
+ *
236
246
* @return array|null
237
247
*/
238
248
protected function sort ($ builder )
239
249
{
240
250
if (count ($ builder ->orders ) == 0 ) {
241
- return null ;
251
+ return ;
242
252
}
243
253
244
254
return collect ($ builder ->orders )->map (function ($ order ) {
0 commit comments