-
Notifications
You must be signed in to change notification settings - Fork 0
/
miniES.php
105 lines (81 loc) · 2.61 KB
/
miniES.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
class miniES
{
private $awsAccessKey;
private $awsSecretKey;
private $esEndpoint;
public function __construct($awsAccessKey, $awsSecretKey, $esEndpoint)
{
$this->awsAccessKey = $awsAccessKey;
$this->awsSecretKey = $awsSecretKey;
$this->esEndpoint = $esEndpoint;
}
private function sendRequest($method, $path, $params = [], $data = [])
{
$url = $this->esEndpoint.$path;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
]);
if (!empty($data)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $this->awsAccessKey.':'.$this->awsSecretKey);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return [
'status_code' => $statusCode,
'response' => $response,
];
}
public function createIndex($indexName)
{
$path = "/$indexName";
$method = 'PUT';
return $this->sendRequest($method, $path);
}
public function deleteIndex($indexName)
{
$path = "/$indexName";
$method = 'DELETE';
return $this->sendRequest($method, $path);
}
public function indexDocument($indexName, $document)
{
$path = "/$indexName/_doc";
$method = 'POST';
return $this->sendRequest($method, $path, [], $document);
}
public function search($indexName, $query)
{
$path = "/$indexName/_search";
$method = 'GET';
return $this->sendRequest($method, $path, ['q' => $query]);
}
}
// Usage example:
$accessKey = 'YOUR_AWS_ACCESS_KEY';
$secretKey = 'YOUR_AWS_SECRET_KEY';
$endpoint = 'https://your-es-endpoint.amazonaws.com';
$es = new miniES($accessKey, $secretKey, $endpoint);
// Create an index
$indexResponse = $es->createIndex('my_index');
print_r($indexResponse);
// Index a document
$document = [
'title' => 'Sample Document',
'content' => 'This is a sample document.',
];
$indexDocumentResponse = $es->indexDocument('my_index', $document);
print_r($indexDocumentResponse);
// Search documents
$searchResponse = $es->search('my_index', 'sample');
print_r($searchResponse);
// Delete an index
$deleteResponse = $es->deleteIndex('my_index');
print_r($deleteResponse);