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

Wie verwende ich Elasticsearch mit CakePHP?

PHPz
PHPzOriginal
2023-06-03 21:31:51979Durchsuche

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
  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端口
],
  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',
        ]);// 关联关系
    }
}
  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 Version 4.x verwenden Sie den folgenden Befehl:

bin/cake elasticsearch:indices create_indexes ElasticsearchModel
  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.'));
    }
}
  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'));
}

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']);
}

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!

Stellungnahme:
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