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

Bagaimana untuk menggunakan Elasticsearch dengan CakePHP?

PHPz
Lepaskan: 2023-06-03 21:34:01
asal
1045 orang telah melayarinya

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
Salin selepas log masuk
  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端口
],
Salin selepas log masuk
  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',
        ]);// 关联关系
    }
}
Salin selepas log masuk
  1. Buat Indeks

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

bin/cake elasticsearch create_index ElasticsearchModel
Salin selepas log masuk

Selepas versi 4.x, gunakan arahan berikut:

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

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']);
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan