Maison  >  Article  >  cadre php  >  Comment utiliser ElasticSearch pour le stockage de données et la recherche dans Workerman

Comment utiliser ElasticSearch pour le stockage de données et la recherche dans Workerman

王林
王林original
2023-11-07 13:40:50704parcourir

Comment utiliser ElasticSearch pour le stockage de données et la recherche dans Workerman

Dans le développement Web, le stockage et la recherche de données sont des éléments très importants. ElasticSearch est un moteur de recherche distribué open source largement utilisé dans la recherche et l'analyse de données. Il est capable de gérer de grandes quantités de données et offre des capacités de recherche et d'agrégation efficaces. Workerman est un framework de socket PHP hautes performances adapté au développement d'applications telles que la communication en temps réel, les jeux en ligne et les services Web à haute concurrence. Dans cet article, nous expliquerons comment utiliser ElasticSearch pour le stockage de données et la recherche dans Workerman.

  1. Installation et configuration d'ElasticSearch

Avant de commencer, nous devons installer et configurer ElasticSearch. Vous pouvez télécharger le dernier package d'installation sur le site officiel d'ElasticSearch https://www.elastic.co/downloads/elasticsearch et l'installer en fonction du type de système d'exploitation. Une fois l'installation terminée, vous pouvez démarrer ElasticSearch avec la commande suivante :

$ cd elasticsearch/bin
$ ./elasticsearch

En même temps, nous pouvons également configurer ElasticSearch dans le fichier config/elasticsearch.yml, par exemple en définissant le port d'écoute, le nom du cluster et le stockage des données. chemin.

  1. Installation et configuration de Workerman

Avant d'utiliser Workerman, nous devons d'abord l'installer et le configurer. Workerman peut être installé en entrant la commande suivante dans le terminal :

$ composer require workerman/workerman

Une fois l'installation terminée, nous devons créer un fichier de script PHP et y introduire la classe Autoloader de Workerman, et ajouter le code suivant pour démarrer Workerman :

    require_once __DIR__ . '/vendor/autoload.php';
    use WorkermanWorker;

    $worker = new Worker();
    $worker->count = 4;
    $worker->onWorkerStart = function($worker){
      // do something
    };

    Worker::runAll();

Dans le code ci-dessus, nous avons créé un objet Worker et défini le nombre de processus sur 4. Dans le même temps, nous définissons également le comportement lorsque le processus Worker démarre via la fonction de rappel onWorkerStart.

  1. Ajouter, supprimer, vérifier et modifier des données dans ElasticSearch

Lors de l'utilisation d'ElasticSearch pour le stockage de données et la recherche dans Workerman, nous devons maîtriser les opérations d'ajout, de suppression, de vérification et de modification de données dans ElasticSearch. suit :

a. Création de données

Dans ElasticSearch, la création de données se fait via une requête HTTP PUT vers l'index et le type de document spécifiés. Vous pouvez utiliser le code suivant pour créer les données :

curl -XPUT http://localhost:9200/{index}/{type}/{id} -d '{
  "title":"ElasticSearch tutorial",
  "tags":["search","elasticsearch"],
  "body":"ElasticSearch is a powerful search engine."
}'

Bien sûr, nous pouvons également utiliser du code PHP pour terminer la création des données :

$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 Requête de données

Dans ElasticSearch, la requête de données est divisée en deux méthodes : la requête précise et la requête floue. Parmi eux, une requête précise fait référence à la recherche de données en spécifiant des champs et des valeurs, tandis que la requête floue fait référence à la recherche de données via une correspondance floue. Le code suivant peut être utilisé pour compléter la requête de données :

// 精确查询
$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. Mise à jour des données

Dans ElasticSearch, l'opération de mise à jour des données est effectuée via une requête HTTP POST pour l'index et le type de document spécifiés. pour mettre à jour les données. :

curl -XPOST http://localhost:9200/{index}/{type}/{id}/_update -d '{
  "doc":{
    "title":"New ElasticSearch tutorial"
  }
}'

Bien sûr, nous pouvons également utiliser du code PHP pour terminer la mise à jour des données :

$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 Suppression des données

Dans ElasticSearch, la suppression des données s'effectue via une requête HTTP DELETE pour. l'index et le type de document spécifiés, vous pouvez utiliser le code suivant pour supprimer des données :

curl -XDELETE http://localhost:9200/{index}/{type}/{id}

Bien sûr, nous pouvons également utiliser du code PHP pour terminer la suppression des données :

$client = ElasticsearchClientBuilder::create()->build();
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id'
];
$response = $client->delete($params);
  1. Exemple d'ElasticSearch dans Workerman

Grâce à ce qui précède opérations, nous maîtrisons le processus de suppression des données dans les opérations de base d'ElasticSearch de stockage et de recherche de données. Ensuite, nous allons implémenter un exemple d'utilisation d'ElasticSearch pour le stockage de données et la recherche dans Workerman. Le code spécifique est le suivant :

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();

Dans le code ci-dessus, nous démarrons d'abord un client ElasticSearch et créons un objet Worker pour gérer la connexion et les données. demandes. Lorsqu'un client se connecte et reçoit une demande de données, nous récupérons les données d'ElasticSearch et envoyons les résultats au client.

  1. Résumé

Cet article explique comment utiliser ElasticSearch pour le stockage de données et la recherche dans Workerman. En maîtrisant les opérations d'ajout, de suppression, d'interrogation et de modification de données dans ElasticSearch, nous pouvons rapidement stocker et rechercher des données dans des applications Web. Dans le même temps, nous avons également implémenté une application ElasticSearch simple dans Workerman pour mieux comprendre et appliquer les opérations ci-dessus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn