Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menggunakan Elasticsearch dengan CakePHP?
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.
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
Seterusnya, kita perlu mengkonfigurasi sambungan untuk Elasticsearch. Dalam fail config/app.php, tambahkan konfigurasi berikut:
'elastic' => [ 'host' => 'localhost',// Elasticsearch主机 'port' => '9200',// Elasticsearch端口 ],
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', ]);// 关联关系 } }
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
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.')); } }
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.
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!