Heim > Backend-Entwicklung > PHP-Tutorial > Wie verwende ich Elasticsearch mit CakePHP?

Wie verwende ich Elasticsearch mit CakePHP?

PHPz
Freigeben: 2023-06-03 21:34:01
Original
1102 Leute haben es durchsucht

CakePHP ist ein beliebtes PHP-Framework, das umfangreiche Funktionen und Tools für die Entwicklung von Webanwendungen bietet. Elasticsearch ist ein weiteres beliebtes Tool für die Volltextsuche und -analyse. In diesem Artikel stellen wir vor, wie Sie Elasticsearch mit CakePHP verwenden.

  1. Installieren Sie die Elasticsearch-Komponente

Zuerst müssen wir eine Elasticsearch-Komponente installieren, um sie in CakePHP zu integrieren. Es stehen viele Komponenten zur Verfügung, wir werden jedoch die Komponente „Elasticsearch-php“ verwenden, den offiziell von Elasticsearch bereitgestellten PHP-Client.

Installieren Sie die Komponente mit Composer:

composer require elasticsearch/elasticsearch
Nach dem Login kopieren
  1. Konfigurieren Sie die Verbindung

Als nächstes müssen wir die Verbindung für Elasticsearch konfigurieren. Fügen Sie in der Datei config/app.php die folgende Konfiguration hinzu:

'elastic' => [
    'host' => 'localhost',// Elasticsearch主机
    'port' => '9200',// Elasticsearch端口
],
Nach dem Login kopieren
  1. Modell erstellen

Jetzt müssen wir das Modell für die Interaktion mit Elasticsearch erstellen. Erstellen Sie eine Datei namens ElasticsearchModel.php in src/Model und schreiben Sie den folgenden Code:

<?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',
        ]);// 关联关系
    }
}
Nach dem Login kopieren
  1. Index erstellen

Jetzt können wir den Elasticsearch-Index erstellen. Verwenden Sie vor Version 4.x den folgenden Befehl:

bin/cake elasticsearch create_index ElasticsearchModel
Nach dem Login kopieren

Nach Version 4.x verwenden Sie den folgenden Befehl:

bin/cake elasticsearch:indices create_indexes ElasticsearchModel
Nach dem Login kopieren
  1. Dokumente hinzufügen

Als nächstes können wir Dokumente hinzufügen. Im Controller können wir den folgenden Code schreiben:

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.'));
    }
}
Nach dem Login kopieren
  1. Dokumente durchsuchen

Jetzt können wir nach Dokumenten suchen. Im Controller können wir den folgenden Code schreiben:

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

Wir können Paginator in der Ansicht verwenden, um die Suchergebnisse anzuzeigen.

  1. Dokument löschen

Wenn Sie ein Dokument löschen müssen, können wir den folgenden Code verwenden:

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

Fazit

Oben erfahren Sie, wie Sie Elasticsearch in CakePHP verwenden. In diesem Prozess haben wir die Komponente „Elasticsearch-php“ verwendet, um eine Verbindung zu Elasticsearch herzustellen, ein Elasticsearch-Modell zu erstellen, einen Index zu erstellen, Dokumente hinzuzufügen, nach Dokumenten zu suchen und Dokumente zu löschen.

Für Entwickler ist die Verwendung von Elasticsearch eine einfache und effektive Möglichkeit, Volltextsuche und -analyse zu implementieren. Die Verwendung von Elasticsearch in CakePHP kann uns dabei helfen, Webanwendungen effizienter zu erstellen und eine bessere Benutzererfahrung und Leistung zu bieten.

Das obige ist der detaillierte Inhalt vonWie verwende ich Elasticsearch mit CakePHP?. 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