3 namespace CorpusParole\Http\Controllers\Api; |
3 namespace CorpusParole\Http\Controllers\Api; |
4 |
4 |
5 use Illuminate\Http\Request; |
5 use Illuminate\Http\Request; |
6 |
6 |
7 use CorpusParole\Http\Controllers\Controller; |
7 use CorpusParole\Http\Controllers\Controller; |
|
8 use CorpusParole\Libraries\Filters\CorpusFilterManager; |
|
9 |
8 use Es; |
10 use Es; |
9 use Log; |
11 use Log; |
10 |
12 |
11 class GeoStatsController extends Controller |
13 class GeoStatsController extends Controller |
12 { |
14 { |
16 * @return \Illuminate\Http\Response |
18 * @return \Illuminate\Http\Response |
17 */ |
19 */ |
18 public function index(Request $request) |
20 public function index(Request $request) |
19 { |
21 { |
20 $area = $request->input('area'); |
22 $area = $request->input('area'); |
21 $filter = [ |
23 |
22 'match_all' => [] |
24 $filterManager = new CorpusFilterManager(); |
23 ]; |
25 $filters = $filterManager->prepareFilters($request); |
|
26 unset($filters['location']); |
|
27 $qFilterParts = $filterManager->buildESFilters($filters); |
|
28 if(is_null($qFilterParts)) { |
|
29 $qFilterParts = []; |
|
30 } |
|
31 |
24 if(!is_null($area) && $area !== config('corpusparole.geonames_earth_geonamesid')) { |
32 if(!is_null($area) && $area !== config('corpusparole.geonames_earth_geonamesid')) { |
25 $filter = [ |
33 $qFilterParts[] = [ |
26 'term' => [ |
34 'term' => [ |
27 "geonames_hierarchy" => $area |
35 "geonames_hierarchy" => $area |
28 ] |
36 ] |
29 ]; |
37 ]; |
30 } |
38 } |
31 $query = [ |
39 |
|
40 $query = $filterManager->buildQuery($qFilterParts); |
|
41 |
|
42 $queryES = [ |
32 'index' => env('ELASTICSEARCH_INDEX'), |
43 'index' => env('ELASTICSEARCH_INDEX'), |
33 'body' => [ |
44 'body' => [ |
34 "size" => 0, |
45 "size" => 0, |
35 "query" => $filter, |
46 "query" => $query, |
36 "aggs" => [ |
47 "aggs" => [ |
37 "geos" => [ |
48 "geos" => [ |
38 "terms" => [ |
49 "terms" => [ |
39 "size" => 0, |
50 "size" => 0, |
40 "field" => "geonames_hierarchy" |
51 "field" => "geonames_hierarchy" |
41 ] |
52 ] |
42 ] |
53 ] |
43 ] |
54 ] |
44 ] |
55 ] |
45 ]; |
56 ]; |
46 $esRes = Es::search($query); |
57 $esRes = Es::search($queryES); |
47 |
58 |
48 $geosats = []; |
59 $geosats = []; |
49 |
60 |
50 foreach($esRes['aggregations']['geos']['buckets'] as $bucket) { |
61 foreach($esRes['aggregations']['geos']['buckets'] as $bucket) { |
51 $geosats[(string)($bucket['key'])] = $bucket['doc_count']; |
62 $geosats[(string)($bucket['key'])] = $bucket['doc_count']; |