Heim > PHP-Framework > Workerman > Hauptteil

So verwenden Sie ElasticSearch zur Datenspeicherung und Suche in Workerman

王林
Freigeben: 2023-11-07 13:40:50
Original
722 Leute haben es durchsucht

So verwenden Sie ElasticSearch zur Datenspeicherung und Suche in Workerman

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.

  1. ElasticSearch-Installation und -Konfiguration

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
Nach dem Login kopieren

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.

  1. Installation und Konfiguration von Workerman

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
Nach dem Login kopieren

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();
Nach dem Login kopieren

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.

  1. Daten in ElasticSearch hinzufügen, löschen, prüfen und ändern

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."
}'
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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"
  }
}'
Nach dem Login kopieren

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);
Nach dem Login kopieren

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}
Nach dem Login kopieren

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);
Nach dem Login kopieren
  1. ElasticSearch-Beispiel in Workerman

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();
Nach dem Login kopieren

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.

  1. Zusammenfassung

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage