ElasticsearchManager   A
last analyzed

Complexity

Total Complexity 17

Size/Duplication

Total Lines 185
Duplicated Lines 0 %

Test Coverage

Coverage 78.38%

Importance

Changes 0
Metric Value
eloc 24
dl 0
loc 185
ccs 29
cts 37
cp 0.7838
rs 10
c 0
b 0
f 0
wmc 17

16 Methods

Rating   Name   Duplication   Size   Complexity  
A indexStatement() 0 3 1
A updateStatement() 0 3 1
A existStatement() 0 3 1
A repository() 0 3 1
A bulkStatement() 0 3 1
A getEsDefaultIndex() 0 3 1
A suggestStatement() 0 3 1
A getEsClient() 0 3 1
A deleteStatement() 0 3 1
A putMappingStatement() 0 3 1
A getStatement() 0 6 2
A searchStatement() 0 3 1
A existIndexStatement() 0 3 1
A search() 0 7 1
A __construct() 0 3 1
A suggest() 0 3 1
1
<?php
2
namespace Triadev\Leopard;
3
4
use Elasticsearch\Client;
5
use Elasticsearch\Common\Exceptions\Missing404Exception;
6
use Illuminate\Database\Eloquent\Model;
7
use Triadev\Es\Contract\ElasticsearchContract;
8
use Triadev\Es\Dsl\Dsl\Search;
9
use Triadev\Es\Dsl\Dsl\Suggestion;
10
use Triadev\Es\Dsl\Facade\ElasticDsl;
11
use Triadev\Leopard\Business\Dsl\SearchDsl;
12
use Triadev\Leopard\Business\Helper\IsModelSearchable;
13
use Triadev\Leopard\Contract\ElasticsearchManagerContract;
14
use Triadev\Leopard\Contract\Repository\ElasticsearchRepositoryContract;
15
16
class ElasticsearchManager implements ElasticsearchManagerContract
17
{
18
    use IsModelSearchable;
19
    
20
    /** @var Client */
21
    private $esClient;
22
    
23
    /**
24
     * ElasticsearchManager constructor.
25
     * @param ElasticsearchContract $elasticsearch
26
     */
27 19
    public function __construct(ElasticsearchContract $elasticsearch)
28
    {
29 19
        $this->esClient = $elasticsearch->getClient();
30 19
    }
31
    
32
    /**
33
     * Get elasticsearch client
34
     *
35
     * @return Client
36
     */
37 18
    public function getEsClient(): Client
38
    {
39 18
        return $this->esClient;
40
    }
41
    
42
    /**
43
     * Get es default index
44
     *
45
     * @return string
46
     */
47 4
    public function getEsDefaultIndex() : string
48
    {
49 4
        return config('leopard.index');
50
    }
51
    
52
    /**
53
     * Search
54
     *
55
     * @param \ONGR\ElasticsearchDSL\Search|null $search
56
     * @param Model|Searchable|null $model
57
     * @return SearchDsl|Search
58
     */
59 5
    public function search(
60
        ?\ONGR\ElasticsearchDSL\Search $search = null,
61
        ?Model $model = null
62
    ) : SearchDsl {
63 5
        return app()->make(SearchDsl::class, [
64 5
            'search' => $search,
65 5
            'model' => $model
66
        ]);
67
    }
68
    
69
    /**
70
     * Suggestion
71
     *
72
     * @return Suggestion
73
     */
74
    public function suggest() : Suggestion
75
    {
76
        return ElasticDsl::suggest();
77
    }
78
    
79
    /**
80
     * Repository
81
     *
82
     * @return ElasticsearchRepositoryContract
83
     */
84 1
    public function repository() : ElasticsearchRepositoryContract
85
    {
86 1
        return app(ElasticsearchRepositoryContract::class);
87
    }
88
    
89
    /**
90
     * Search statement
91
     *
92
     * @param array $params
93
     * @return array
94
     */
95
    public function searchStatement(array $params) : array
96
    {
97
        return $this->esClient->search($params);
98
    }
99
    
100
    /**
101
     * Put mapping statement
102
     *
103
     * @param array $params
104
     * @return array
105
     */
106
    public function putMappingStatement(array $params): array
107
    {
108
        return $this->esClient->indices()->putMapping($params);
109
    }
110
    
111
    /**
112
     * Index statement
113
     *
114
     * @param array $params
115
     * @return array
116
     */
117 8
    public function indexStatement(array $params) : array
118
    {
119 8
        return $this->esClient->index($params);
120
    }
121
    
122
    /**
123
     * Update statement
124
     *
125
     * @param array $params
126
     * @return array
127
     */
128 1
    public function updateStatement(array $params) : array
129
    {
130 1
        return $this->esClient->update($params);
131
    }
132
    
133
    /**
134
     * Exist statement
135
     *
136
     * @param array $params
137
     * @return bool
138
     */
139 1
    public function existStatement(array $params) : bool
140
    {
141 1
        return $this->esClient->exists($params);
142
    }
143
    
144
    /**
145
     * Exist index statement
146
     *
147
     * @param array $params
148
     * @return bool
149
     */
150 2
    public function existIndexStatement(array $params) : bool
151
    {
152 2
        return $this->esClient->indices()->exists($params);
153
    }
154
    
155
    /**
156
     * Delete statement
157
     *
158
     * @param array $params
159
     * @return array
160
     */
161 1
    public function deleteStatement(array $params) : array
162
    {
163 1
        return $this->esClient->delete($params);
164
    }
165
    
166
    /**
167
     * Get statement
168
     *
169
     * @param array $params
170
     * @return array|null
171
     */
172 7
    public function getStatement(array $params) : ?array
173
    {
174
        try {
175 7
            return $this->esClient->get($params);
176 7
        } catch (Missing404Exception $e) {
177 7
            return null;
178
        }
179
    }
180
    
181
    /**
182
     * Suggest statement
183
     *
184
     * @param array $params
185
     * @return array
186
     */
187
    public function suggestStatement(array $params): array
188
    {
189
        return $this->esClient->suggest($params);
190
    }
191
    
192
    /**
193
     * Bulk statement
194
     *
195
     * @param array $params
196
     * @return array
197
     */
198 3
    public function bulkStatement(array $params): array
199
    {
200 3
        return $this->esClient->bulk($params);
201
    }
202
}
203