Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menggunakan php Elasticsearch untuk melaksanakan pertanyaan gabungan pelbagai medan?
Bagaimana untuk menggunakan php Elasticsearch untuk melaksanakan pertanyaan gabungan berbilang medan?
Pengenalan:
Elasticsearch ialah enjin carian sumber terbuka yang diedarkan berdasarkan Lucene Ia menyediakan keupayaan carian teks penuh yang pantas dan boleh dipercayai serta menyokong penyimpanan, pengambilan dan analisis data berskala besar. Dalam artikel ini, kami akan meneroka cara menggunakan perpustakaan php Elasticsearch untuk melaksanakan pertanyaan gabungan berbilang medan untuk memenuhi pelbagai keperluan carian dengan lebih baik.
1 Pasang dan konfigurasikan Elasticsearch
Untuk menggunakan perpustakaan php Elasticsearch, anda perlu memasang dan mengkonfigurasi Elasticsearch terlebih dahulu. Anda boleh memuat turun dan memasang Elasticsearch di tapak web rasmi dan pastikan ia berjalan.
2. Pasang perpustakaan php Elasticsearch
Anda boleh menggunakan Composer untuk memasang perpustakaan php Elasticsearch. Cipta fail composer.json dalam direktori akar projek dan tambah kandungan berikut:
{
"require": {
"elasticsearch/elasticsearch": "^7.0"
}
}
Kemudian laksanakan arahan berikut dalam baris arahan untuk memasang perpustakaan:
composer install
Tiga , Sambung ke Elasticsearch
Seterusnya, cipta pelanggan untuk menyambung ke Elasticsearch dalam kod php. Tambahkan kod berikut pada permulaan fail:
memerlukan 'vendor/autoload.php';
$client = new ElasticsearchClient(); 4. Cipta indeks
Simpan data untuk dicari dalam indeks. Mari kita anggap di sini bahawa kita ingin menyimpan beberapa maklumat buku. Tambahkan coretan berikut dalam kod php anda:
$params = [
'index' => 'books', 'body' => [ 'mappings' => [ 'properties' => [ 'title' => [ 'type' => 'text' ], 'author' => [ 'type' => 'text' ], 'category' => [ 'type' => 'keyword' ] ] ] ]
];
$response = $client->indices()->create($params);
Ini akan mencipta fail dipanggil Indeks "buku" dan tentukan tiga medan: "tajuk", "pengarang" dan "kategori".
5. Tambah dokumen
Tambahkan dokumen untuk dicari pada indeks. Tambahkan coretan kod berikut dalam kod php:
$params = [
'index' => 'books', 'id' => '1', 'body' => [ 'title' => 'The Great Gatsby', 'author' => 'F. Scott Fitzgerald', 'category' => 'Fiction' ]
];
$response = $client->index($params);
6. Jalankan pertanyaan gabungan berbilang medan
Sekarang kita sudah bersedia Tiba masanya untuk melaksanakan pertanyaan gabungan berbilang medan. Tambahkan coretan kod berikut dalam kod php:
$params = [
'index' => 'books', 'body' => [ 'query' => [ 'bool' => [ 'must' => [ ['match' => ['title' => 'great']], ['match' => ['author' => 'fitzgerald']] ] ] ] ]
];
$response = $client->search($params);
Dalam kod di atas, kami menggunakan pertanyaan bool untuk Mewakili pertanyaan gabungan berbilang medan. Dalam klausa mesti, kami menggunakan dua klausa padanan untuk memadankan medan "tajuk" dan medan "pengarang". Ini bermakna hanya dokumen yang memenuhi kedua-dua syarat akan diambil.
7. Memproses hasil carian
Hasil carian akan merangkumi semua dokumen yang memenuhi syarat pertanyaan. Tambahkan coretan kod berikut dalam kod php untuk mengendalikan hasil carian:
foreach ($respons['hits']['hits'] as $hit) {
echo $hit['_source']['title']; echo $hit['_source']['author']; echo $hit['_source']['category']; echo "
";
}
8. Summary
Gambaran keseluruhan contoh kod.PNG
Atas ialah kandungan terperinci Bagaimana untuk menggunakan php Elasticsearch untuk melaksanakan pertanyaan gabungan pelbagai medan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!