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

Comment utiliser Elasticsearch avec CakePHP ?

PHPz
Libérer: 2023-06-03 21:34:01
original
1060 Les gens l'ont consulté

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
Copier après la connexion
  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端口
],
Copier après la connexion
  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',
        ]);// 关联关系
    }
}
Copier après la connexion
  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
Copier après la connexion

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

bin/cake elasticsearch:indices create_indexes ElasticsearchModel
Copier après la connexion
  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.'));
    }
}
Copier après la connexion
  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'));
}
Copier après la connexion

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']);
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal