Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menggunakan Elasticsearch dengan CakePHP?

Bagaimana untuk menggunakan Elasticsearch dengan CakePHP?

PHPz
PHPzasal
2023-06-03 21:31:511046semak imbas

CakePHP ialah rangka kerja PHP popular yang menyediakan ciri dan alatan yang kaya untuk membangunkan aplikasi web. Elasticsearch ialah satu lagi alat popular yang digunakan untuk carian dan analisis teks penuh. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Elasticsearch dengan CakePHP.

  1. Pasang komponen Elasticsearch

Pertama, kita perlu memasang komponen Elasticsearch untuk disepadukan dengan CakePHP. Terdapat banyak komponen yang tersedia, tetapi kami akan menggunakan komponen elasticsearch-php, iaitu klien PHP yang disediakan secara rasmi oleh Elasticsearch.

Pasang komponen menggunakan Komposer:

composer require elasticsearch/elasticsearch
  1. Konfigurasikan sambungan

Seterusnya, kita perlu mengkonfigurasi sambungan untuk Elasticsearch. Dalam fail config/app.php, tambahkan konfigurasi berikut:

'elastic' => [
    'host' => 'localhost',// Elasticsearch主机
    'port' => '9200',// Elasticsearch端口
],
  1. Buat Model

Sekarang, kita perlu mencipta model untuk berinteraksi dengan Elasticsearch. Cipta fail bernama ElasticsearchModel.php dalam src/Model dan tulis kod berikut:

<?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. Buat Indeks

Kini kita boleh mencipta indeks Elasticsearch. Sebelum versi 4.x, gunakan arahan berikut:

bin/cake elasticsearch create_index ElasticsearchModel

Selepas versi 4.x, gunakan arahan berikut:

bin/cake elasticsearch:indices create_indexes ElasticsearchModel
  1. Tambah Dokumen

Seterusnya, kita boleh menambah dokumentasi. Dalam pengawal kita boleh menulis kod berikut:

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. Cari Dokumen

Kini kita boleh mencari dokumen. Dalam pengawal, kita boleh menulis kod berikut:

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

Kita boleh menggunakan Paginator dalam Paparan untuk memaparkan hasil carian.

  1. Padam dokumen

Jika anda perlu memadamkan dokumen, kami boleh menggunakan kod berikut:

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

Kesimpulan

The di atas adalah dalam Kaedah CakePHP menggunakan Elasticsearch. Dalam proses ini, kami menggunakan komponen elasticsearch-php untuk menyambung ke Elasticsearch, mencipta model Elasticsearch, mencipta indeks, menambah dokumen, mencari dokumen dan memadam dokumen.

Untuk pembangun, menggunakan Elasticsearch ialah cara yang mudah dan berkesan untuk melaksanakan carian dan analisis teks penuh. Menggunakan Elasticsearch dalam CakePHP boleh membantu kami membina aplikasi web dengan lebih cekap dan memberikan pengalaman dan prestasi pengguna yang lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Elasticsearch dengan CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn