Maison >développement back-end >tutoriel php >Comment utiliser Elasticsearch avec CakePHP ?

Comment utiliser Elasticsearch avec CakePHP ?

PHPz
PHPzoriginal
2023-06-03 21:31:511048parcourir

CakePHP est un framework PHP populaire qui fournit des fonctionnalités et des outils riches pour développer des applications Web. Elasticsearch est un autre outil populaire utilisé pour la recherche et l'analyse en texte intégral. Dans cet article, nous présenterons comment utiliser Elasticsearch avec CakePHP.

  1. Installer le composant Elasticsearch

Tout d'abord, nous devons installer un composant Elasticsearch à intégrer à CakePHP. De nombreux composants sont disponibles, mais nous utiliserons le composant elasticsearch-php, qui est le client PHP officiellement fourni par Elasticsearch.

Installez le composant à l'aide de Composer :

composer require elasticsearch/elasticsearch
  1. Configurez la connexion

Ensuite, nous devons configurer la connexion pour Elasticsearch. Dans le fichier config/app.php, ajoutez la configuration suivante :

'elastic' => [
    'host' => 'localhost',// Elasticsearch主机
    'port' => '9200',// Elasticsearch端口
],
  1. Créer un modèle

Maintenant, nous devons créer le modèle pour interagir avec Elasticsearch. Créez un fichier appelé ElasticsearchModel.php dans src/Model et écrivez le code suivant :

<?php
namespace AppModel;

use CakeElasticSearchIndex;

class ElasticsearchModel extends Index
{
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setIndex('my_index');// Elasticsearch索引名称
        $this->setType('my_type');// Elasticsearch类型名称
        
        $this->primaryKey('id');// 主键
        $$this->belongsTo('Parent', [
            'className' => 'Parent',
            'foreignKey' => 'parent_id',
        ]);// 关联关系
    }
}
  1. Create index

Maintenant, nous pouvons créer l'index Elasticsearch. Avant la version 4.x, utilisez la commande suivante :

bin/cake elasticsearch create_index ElasticsearchModel

Après la version 4.x, utilisez la commande suivante :

bin/cake elasticsearch:indices create_indexes ElasticsearchModel
  1. Ajouter des documents

Ensuite, nous pouvons ajouter des documents. Dans le contrôleur, nous pouvons écrire le code suivant :

public function add()
{
    $this->request->allowMethod('post');
    $data = $this->request->data;

    $document = $this->ElasticsearchModel->newDocument();
    $document->id = $data['id'];
    $document->parent_id = $data['parent_id'];
    $document->title = $data['title'];
    $document->content = $data['content'];
    $document->body = $data['body'];

    if ($this->ElasticsearchModel->save($document)) {
        $this->Flash->success(__('The document has been saved.'));
        return $this->redirect(['action' => 'index']);
    } else {
        $this->Flash->error(__('The document could not be saved. Please, try again.'));
    }
}
  1. Rechercher des documents

Maintenant, nous pouvons rechercher des documents. Dans le contrôleur, on peut écrire le code suivant :

public function search()
{
    $this->paginate = [
        'contain' => ['Parent'],
    ];

    $query = $this->request->getQuery('q');
    $documents = $this->ElasticsearchModel->find()
        ->contain(['Parent'])
        ->where(['title LIKE' => "%$query%"])
        ->paginate();

    $this->set(compact('documents'));
}

On peut utiliser Paginator dans la View pour afficher les résultats de la recherche.

  1. Supprimer le document

Si vous devez supprimer un document, nous pouvons utiliser le code suivant :

public function delete($id)
{
    $this->request->allowMethod(['post', 'delete']);
    $document = $this->ElasticsearchModel->find()->where(['id' => $id])->firstOrFail();
    if ($this->ElasticsearchModel->delete($document)) {
        $this->Flash->success(__('The document has been deleted.'));
    } else {
        $this->Flash->error(__('The document could not be deleted. Please, try again.'));
    }

    return $this->redirect(['action' => 'index']);
}

Conclusion

Ce qui précède explique comment utiliser Elasticsearch dans CakePHP. Dans ce processus, nous avons utilisé le composant elasticsearch-php pour nous connecter à Elasticsearch, créer un modèle Elasticsearch, créer un index, ajouter des documents, rechercher des documents et supprimer des documents.

Pour les développeurs, utiliser Elasticsearch est un moyen simple et efficace de mettre en œuvre la recherche et l'analyse en texte intégral. L'utilisation d'Elasticsearch dans CakePHP peut nous aider à créer des applications Web plus efficacement et à offrir une meilleure expérience utilisateur et de meilleures performances.

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