Bagaimana untuk membina fungsi carian masa nyata menggunakan PHP dan Elasticsearch

WBOY
Lepaskan: 2023-07-18 11:32:01
asal
903 orang telah melayarinya

Cara membina keupayaan carian masa nyata menggunakan PHP dan Elasticsearch

Elasticsearch ialah enjin carian teragih sumber terbuka yang boleh digunakan untuk mendapatkan dan menganalisis sejumlah besar data dengan cepat dan cekap. Dan PHP ialah bahasa skrip popular yang biasa digunakan untuk pembangunan web. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk membina fungsi carian masa nyata.

Langkah 1: Pasang dan konfigurasikan Elasticsearch

Mula-mula anda perlu memasang pelayan Elasticsearch. Anda boleh memuat turun pakej pemasangan untuk sistem pengendalian yang sepadan dari laman web rasmi dan memasangnya mengikut dokumentasi rasmi. Selepas pemasangan selesai, anda perlu mengubah suai fail konfigurasi Elasticsearch elasticsearch.yml, contohnya:

cluster.name: my-cluster
Salin selepas log masuk

Ubah suai cluster.name kepada nama cluster tersuai.

Langkah 2: Buat indeks dan pemetaan

Dalam Elasticsearch, data disusun menjadi satu atau lebih indeks. Setiap indeks mengandungi berbilang jenis, dan setiap jenis mengandungi berbilang dokumen. Mula-mula anda perlu membuat indeks dan menentukan pemetaannya.

Anda boleh menggunakan API RESTful Elasticsearch untuk membuat indeks dan pemetaan. Buat indeks dengan menghantar permintaan PUT ke titik akhir yang ditentukan pada pelayan.

Sebagai contoh, dengan mengandaikan kita ingin mencipta indeks yang dipanggil "produk", kita boleh menggunakan kod berikut:

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>
Salin selepas log masuk

Kod ini menggunakan perpustakaan curl untuk menghantar permintaan PUT ke pelayan Elasticsearch, menyatakan URL indeks. Dengan menetapkan pilihan CURLOPT_PUT kepada benar, kami memberitahu perpustakaan curl untuk menghantar permintaan PUT. Akhirnya, permintaan dihantar dengan melaksanakan fungsi curl_exec.

Sama seperti cara anda membuat indeks, anda juga boleh menggunakan permintaan PUT untuk membuat pemetaan indeks.

Langkah 3: Indeks dokumen

Selepas mencipta indeks dan menentukan pemetaan, tiba masanya untuk mengindeks dokumen. Dokumen ialah unit asas dalam Elasticsearch Ia adalah objek JSON yang mengandungi satu set medan.

Sebagai contoh, jika kita ingin mengindeks dokumen bernama "product1", kita boleh menggunakan kod berikut:

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/product/1';

$data = '{
  "title": "Product 1",
  "description": "This is product 1"
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>
Salin selepas log masuk

Kod ini menggunakan perpustakaan curl untuk menghantar permintaan PUT ke pelayan Elasticsearch, menyatakan URL dokumen. URL dokumen terdiri daripada nama indeks, jenis dan ID dokumen. Bahagian data ialah rentetan JSON yang mengandungi medan tajuk dan penerangan.

Sama seperti cara mengindeks dokumen, anda juga boleh menggunakan permintaan PUT untuk mengemas kini dokumen.

Langkah 4: Cari Dokumen

Selepas dokumen telah diindeks, anda boleh menggunakan fungsi carian Elasticsearch untuk mendapatkan semula dokumen.

Sebagai contoh, jika kita ingin mencari dokumen yang medan tajuknya mengandungi kata kunci "produk", kita boleh menggunakan kod berikut:

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/_search';

$data = '{
  "query": {
    "match": {
      "title": "product"
    }
  }
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>
Salin selepas log masuk

Kod ini menggunakan perpustakaan curl untuk menghantar permintaan POST ke pelayan Elasticsearch, dengan menyatakan URL carian. URL yang dicari terdiri daripada nama indeks dan _search. Bahagian data ialah rentetan JSON yang mengandungi syarat pertanyaan.

Langkah 5: Proses hasil carian

Seperti yang diperlukan, hasil carian yang dikembalikan boleh diproses selanjutnya. Hasil carian dikembalikan dalam format JSON, yang boleh dihuraikan dan dipaparkan mengikut keperluan.

Sebagai contoh, kita boleh menggunakan kod berikut untuk menghuraikan hasil JSON dan memaparkan hasil carian:

<?php

$response = json_decode($response, true);

$hits = $response['hits']['hits'];

foreach ($hits as $hit) {
  $source = $hit['_source'];
  $title = $source['title'];
  $description = $source['description'];

  echo "Title: $title
";
  echo "Description: $description
";
  echo "
";
}
?>
Salin selepas log masuk

Kod ini mula-mula menukar hasil carian kepada tatasusunan bersekutu, kemudian mengekstrak medan tajuk dan penerangan setiap dokumen dan memaparkannya .

Dengan langkah di atas, kita boleh menggunakan PHP dan Elasticsearch untuk membina fungsi carian masa nyata. Dengan mengkonfigurasi pelayan Elasticsearch, mencipta indeks dan pemetaan, mengindeks dokumen dan mencari dokumen, kami boleh membina enjin carian masa nyata yang berkuasa.

Atas ialah kandungan terperinci Bagaimana untuk membina fungsi carian masa nyata menggunakan PHP dan Elasticsearch. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!