server/src/app/Http/Controllers/Api/DateStatsController.php
author ymh <ymh.work@gmail.com>
Thu, 20 Oct 2016 15:09:31 +0200
changeset 376 02f113d43f18
parent 375 145561ff51ff
child 377 52169c718513
permissions -rw-r--r--
add date filter to documents api end point
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
307
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
namespace CorpusParole\Http\Controllers\Api;
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
// use CorpusParole\Http\Requests;
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
use Illuminate\Http\Request;
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
use Log;
375
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
     8
use Es;
307
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
use CorpusParole\Libraries\Sparql\SparqlClient;
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
use CorpusParole\Http\Controllers\Controller;
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
class DateStatsController extends Controller
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
{
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
    private $sparqlClient = null;
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    public function __construct(SparqlClient $sparqlClient) {
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        $this->sparqlClient = $sparqlClient;
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    }
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    /**
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
     * Display the specified resource.
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
     *
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
     * @return \Illuminate\Http\Response
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
     */
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
    public function index(Request $request)
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    {
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
375
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    31
        $query = [ "match_all" => []];
307
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
375
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    33
        $esQuery = [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    34
            'index' => env('ELASTICSEARCH_INDEX'),
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    35
            'body' => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    36
                "size" => 0,
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    37
                "query" => $query,
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    38
                "aggs" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    39
                    "datestats" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    40
                        "nested"=> [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    41
                            "path" => "creation_years"
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    42
                        ],
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    43
                        "aggs" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    44
                            "years" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    45
                                "terms"=> [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    46
                                    "field" => "creation_years.year",
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    47
                                    "size" => 0,
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    48
                                    "order" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    49
                                        "_term" => "asc"
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    50
                                    ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    51
                                ],
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    52
                                "aggs" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    53
                                    "year_count" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    54
                                        "sum" => [
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    55
                                            "field" => "creation_years.weight"
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    56
                                        ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    57
                                    ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    58
                                ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    59
                            ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    60
                        ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    61
                    ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    62
                ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    63
            ]
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    64
        ];
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    65
        $esRes = Es::search($esQuery);
307
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
375
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    67
        $datestats = [];
307
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
375
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    69
        foreach($esRes['aggregations']['datestats']['years']['buckets'] as $bucket) {
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    70
            $datestats[(string)($bucket['key'])] = round($bucket['year_count']['value']);
307
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        }
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
375
145561ff51ff change datestats to use elasticsearch
ymh <ymh.work@gmail.com>
parents: 307
diff changeset
    73
        return response()->json(['datestats' => $datestats ]);
307
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    }
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
07b44a378ad8 Add the datestats api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
}