In der Webentwicklung sind Datenspeicherung und Suche sehr wichtige Teile. ElasticSearch ist eine verteilte Open-Source-Suchmaschine, die häufig bei der Datensuche und -analyse eingesetzt wird. Es ist in der Lage, große Datenmengen zu verarbeiten und bietet effiziente Such- und Aggregationsfunktionen. Workerman ist ein leistungsstarkes PHP-Socket-Framework, das sich für die Entwicklung von Anwendungen wie Echtzeitkommunikation, Online-Spielen und Webdiensten mit hoher Parallelität eignet. In diesem Artikel stellen wir vor, wie Sie ElasticSearch für die Datenspeicherung und Suche in Workerman verwenden.
Bevor wir beginnen, müssen wir ElasticSearch installieren und konfigurieren. Sie können das neueste Installationspaket von der offiziellen Website von ElasticSearch https://www.elastic.co/downloads/elasticsearch herunterladen und entsprechend dem Betriebssystemtyp installieren. Nachdem die Installation abgeschlossen ist, können Sie ElasticSearch mit dem folgenden Befehl starten:
$ cd elasticsearch/bin $ ./elasticsearch
Gleichzeitig können wir ElasticSearch auch in der Datei config/elasticsearch.yml konfigurieren, z. B. durch Festlegen des Überwachungsports, des Clusternamens und der Datenspeicherung Weg.
Bevor wir Workerman verwenden, müssen wir es zuerst installieren und konfigurieren. Workerman kann durch Eingabe des folgenden Befehls im Terminal installiert werden:
$ composer require workerman/workerman
Sobald die Installation abgeschlossen ist, müssen wir eine PHP-Skriptdatei erstellen, die Autoloader-Klasse von Workerman darin einführen und den folgenden Code hinzufügen, um Workerman zu starten:
require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $worker = new Worker(); $worker->count = 4; $worker->onWorkerStart = function($worker){ // do something }; Worker::runAll();
Im obigen Code haben wir ein Worker-Objekt erstellt und die Anzahl der Prozesse auf 4 festgelegt. Gleichzeitig definieren wir auch das Verhalten beim Start des Worker-Prozesses über die Rückruffunktion onWorkerStart.
Wenn wir ElasticSearch für die Datenspeicherung und -suche in Workerman verwenden, müssen wir die Vorgänge zum Hinzufügen, Löschen, Überprüfen und Ändern von Daten in ElasticSearch beherrschen folgt:
a. Erstellung von Daten
In ElasticSearch erfolgt die Erstellung von Daten über eine HTTP-PUT-Anfrage an den angegebenen Index und Dokumenttyp. Sie können den folgenden Code verwenden, um die Daten zu erstellen:
curl -XPUT http://localhost:9200/{index}/{type}/{id} -d '{ "title":"ElasticSearch tutorial", "tags":["search","elasticsearch"], "body":"ElasticSearch is a powerful search engine." }'
Natürlich, Wir können auch PHP-Code verwenden, um die Erstellung der Daten abzuschließen:
$client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id', 'body' => [ 'title' => 'ElasticSearch tutorial', 'tags' => ['search', 'elasticsearch'], 'body' => 'ElasticSearch is a powerful search engine.' ] ]; $response = $client->index($params);
b Datenabfrage
In ElasticSearch ist die Datenabfrage in zwei Methoden unterteilt: präzise Abfrage und Fuzzy-Abfrage. Unter diesen bezieht sich die präzise Abfrage auf das Suchen von Daten durch Angabe von Feldern und Werten, während sich die Fuzzy-Abfrage auf das Suchen von Daten durch Fuzzy-Matching bezieht. Der folgende Code kann verwendet werden, um die Datenabfrage abzuschließen:
// 精确查询 $client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'match' => [ 'title' => 'ElasticSearch tutorial' ] ] ] ]; $response = $client->search($params); // 模糊查询 $client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'wildcard' => [ 'title' => '*search*' ] ] ] ]; $response = $client->search($params);
c Datenaktualisierung
In ElasticSearch wird der Datenaktualisierungsvorgang durch eine HTTP-POST-Anfrage für den angegebenen Index und Dokumenttyp abgeschlossen um die Daten zu aktualisieren. :
curl -XPOST http://localhost:9200/{index}/{type}/{id}/_update -d '{ "doc":{ "title":"New ElasticSearch tutorial" } }'
Natürlich können wir auch PHP-Code verwenden, um die Aktualisierung der Daten abzuschließen:
$client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id', 'body' => [ 'doc' => [ 'title' => 'New ElasticSearch tutorial' ] ] ]; $response = $client->update($params);
d Löschen von Daten
In ElasticSearch wird das Löschen von Daten durch eine HTTP-DELETE-Anfrage abgeschlossen Für den angegebenen Index und Dokumenttyp können Sie den folgenden Code zum Löschen von Daten verwenden:
curl -XDELETE http://localhost:9200/{index}/{type}/{id}
Natürlich können wir auch PHP-Code verwenden, um das Löschen von Daten abzuschließen:
$client = ElasticsearchClientBuilder::create()->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id' ]; $response = $client->delete($params);
Durch das oben Gesagte Vorgänge beherrschen wir den Prozess des Löschens von Daten in ElasticSearch. Grundlegende Vorgänge der Datenspeicherung und -suche. Als Nächstes implementieren wir ein Beispiel für die Verwendung von ElasticSearch zur Datenspeicherung und -suche in Workerman. Der spezifische Code lautet wie folgt:
require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; use ElasticsearchClientBuilder; // 创建一个Worker对象 $worker = new Worker(); $worker->count = 4; // 启动一个ElasticSearch客户端 $client = ClientBuilder::create()->build(); // 处理连接请求 $worker->onConnect = function($connection) { echo "New connection from " . $connection->getRemoteIp() . PHP_EOL; }; // 处理数据请求 $worker->onMessage = function($connection, $data) use($client) { $params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'wildcard' => [ 'title' => '*' . $data . '*' ] ] ] ]; // 从ElasticSearch检索数据 $response = $client->search($params); // 处理检索结果 $hits = $response['hits']['hits']; if(count($hits) > 0) { $result = 'Results:' . PHP_EOL; foreach($hits as $hit) { $result .= $hit['_source']['title'] . PHP_EOL; } } else { $result = 'No results found.' . PHP_EOL; } // 发送结果给客户端 $connection->send($result); }; Worker::runAll();
Im obigen Code starten wir zunächst einen ElasticSearch-Client und erstellen ein Worker-Objekt zur Verarbeitung der Verbindung und der Daten Anfragen. Wenn ein Client eine Verbindung herstellt und eine Datenanfrage erhält, rufen wir Daten von ElasticSearch ab und senden die Ergebnisse an den Client.
In diesem Artikel wird erläutert, wie Sie ElasticSearch für die Datenspeicherung und Suche in Workerman verwenden. Indem wir die Vorgänge zum Hinzufügen, Löschen, Abfragen und Ändern von Daten in ElasticSearch beherrschen, können wir Daten schnell in Webanwendungen speichern und durchsuchen. Gleichzeitig haben wir auch eine einfache ElasticSearch-Anwendung in Workerman implementiert, um die oben genannten Vorgänge besser zu verstehen und anzuwenden.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie ElasticSearch zur Datenspeicherung und Suche in Workerman. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!