Tutorial ini memandu Anda dalam mengintegrasikan OpenSearch ke aplikasi PHP menggunakan OpenSearch SDK untuk PHP. Di akhir tutorial, Anda akan berhasil mendorong dokumen ke aplikasi OpenSearch dan menjalankan kueri pencarian pertama Anda.
Tutorial ini mencakup integrasi kerja minimal menggunakan PHP SDK. Untuk penerapan di lingkungan produksi, lihat dokumentasi referensi SDK dan panduan konfigurasi skema aplikasi.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Akun Alibaba Cloud dengan aplikasi OpenSearch yang telah dibuat dan dikonfigurasi (bidang indeks, bidang atribut, sumber data, dan kondisi filter)
OpenSearch SDK untuk PHP (V3) yang telah diunduh dari topik Downloads dan ditambahkan ke proyek Anda
Pengguna Resource Access Management (RAM) dengan izin yang diperlukan yang telah diberikan kepada role AliyunServiceRoleForOpenSearch. Lihat AliyunServiceRoleForOpenSearch dan Aturan otorisasi akses.
Untuk mengatur skema aplikasi Anda dengan cepat, unduh templat skema aplikasi. Di Konsol OpenSearch, buka halaman Configure Application, klik Import Template, lalu unggah file tersebut. Templat ini kompatibel dengan kode demo dalam tutorial ini.
Langkah 1: Konfigurasikan kredensial
Simpan kredensial AccessKey Anda sebagai variabel lingkungan. Jangan pernah menyematkan kredensial secara langsung di file sumber.
Gunakan pengguna RAM, bukan kredensial root akun Alibaba Cloud Anda. Lihat Buat pengguna RAM dan Buat pasangan AccessKey.
Linux dan macOS
Ganti <access_key_id> dan <access_key_secret> dengan ID AccessKey dan Rahasia AccessKey pengguna RAM Anda.
export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>Windows
Buat file variabel lingkungan dan tambahkan
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRETdengan nilai masing-masing.Mulai ulang Windows agar perubahan diterapkan.
Langkah 2: Siapkan konfigurasi dasar
Buat file Config.inc.php yang akan digunakan bersama oleh semua bagian integrasi Anda. File ini menginisialisasi klien OpenSearch dengan kredensial, titik akhir, dan nama aplikasi Anda.
<?php
// Impor autoloader.
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
// Baca kredensial dari variabel lingkungan.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
// Tetapkan titik akhir API untuk wilayah Anda.
// Temukan nilai ini di halaman detail aplikasi di Konsol OpenSearch.
$endPoint = '<region endPoint>';
// Tetapkan nama aplikasi dan nama saran drop-down.
$appName = '<app name>';
$suggestName = '<suggest name>';
// Aktifkan mode debug untuk menangkap informasi jejak.
$options = array('debug' => true);
// Buat klien OpenSearch.
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);Ganti <region endPoint>, <app name>, dan <suggest name> dengan nilai dari Konsol OpenSearch.
Langkah 3: Impor file header dan buat klien
OpenSearch SDK untuk PHP menggunakan klien spesifik fitur. Impor file header untuk fitur yang Anda butuhkan, lalu buat objek klien yang sesuai.
File header
<?php
// Konfigurasi dasar (diperlukan untuk semua fitur).
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
// Kueri informasi aplikasi.
require_once("Config.inc.php");
use OpenSearch\Client\AppClient;
use OpenSearch\Generated\Common\Pageable;
// Kueri dokumen (pencarian).
require_once("Config.inc.php");
use OpenSearch\Client\SearchClient;
use OpenSearch\Util\SearchParamsBuilder;
// Dorong dokumen.
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// Saran drop-down.
require_once("Config.inc.php");
use OpenSearch\Client\SuggestClient;
use OpenSearch\Util\SuggestParamsBuilder;Objek klien
<?php
require_once("Config.inc.php");
// Klien kueri informasi aplikasi.
$appClient = new AppClient($client);
// Klien kueri dokumen (pencarian).
$searchClient = new SearchClient($client);
// Klien dorong dokumen.
$documentClient = new DocumentClient($client);
// Klien saran drop-down.
$suggestClient = new SuggestClient($client);Tabel berikut merangkum keempat klien dan perannya:
| Klien | Kelas | Tujuan |
|---|---|---|
$appClient | AppClient | Kueri informasi aplikasi |
$searchClient | SearchClient | Menjalankan kueri pencarian |
$documentClient | DocumentClient | Mendorong dokumen |
$suggestClient | SuggestClient | Mengambil saran drop-down |
Langkah 4: Dorong dokumen
Dokumen yang didorong ke OpenSearch harus berupa string JSON. Setiap dokumen adalah objek dengan dua bidang:
| Bidang | Deskripsi |
|---|---|
cmd | Operasi yang akan dilakukan. Nilai yang valid: ADD, DELETE, UPDATE. Untuk aplikasi standar, hanya ADD dan DELETE yang didukung — untuk memperbarui dokumen, gunakan ADD dan sertakan semua bidang. |
fields | Pasangan kunci-nilai yang mendefinisikan konten dokumen (misalnya, title, body, url). |
Untuk menguji dengan data sampel, buka halaman Instance Management di Konsol OpenSearch, klik More > Upload File di kolom Actions, lalu unduh file sampel dari kotak dialog Upload File.
Contoh berikut mendorong 10 dokumen menggunakan operasi ADD:
<?php
header("Content-Type:text/html;charset=utf-8");
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// Tentukan tabel tempat dokumen akan didorong.
$tableName = '<table name>';
$documentClient = new DocumentClient($client);
// Bangun array dokumen.
$docs_to_upload = array();
for ($i = 0; $i < 10; $i++) {
$item = array();
$item['cmd'] = 'ADD';
$item['fields'] = array(
'id' => $i + 1,
'name' => 'Search' . $i,
);
$docs_to_upload[] = $item;
}
// Encode dan dorong.
$json = json_encode($docs_to_upload);
$ret = $documentClient->push($json, $appName, $tableName);Dorongan yang berhasil mengembalikan respons HTTP 200. Jika $ret->traceInfo->tracer berisi detail error, lihat Langkah 6: Debug permintaan.
Langkah 5: Jalankan kueri pencarian
Gunakan SearchClient dan SearchParamsBuilder untuk membuat dan menjalankan kueri.
<?php
require_once("Config.inc.php");
use OpenSearch\Client\SearchClient;
use OpenSearch\Util\SearchParamsBuilder;
$searchClient = new SearchClient($client);
$params = new SearchParamsBuilder();
// Parameter klausa konfigurasi.
$params->setStart(0); // Offset awal hasil.
$params->setHits(20); // Jumlah hasil yang dikembalikan.
// Parameter kueri.
$params->setAppName('<app name>');
$params->setQuery("name: 'Search'");
$params->setFormat('fulljson');
// Urutkan berdasarkan skor relevansi secara menurun.
$params->addSort('RANK', SearchParamsBuilder::SORT_DECREASE);
// Jalankan dan decode.
$ret = $searchClient->execute($params->build());
$result = json_decode($ret->result, true);
print_r($result);Jika hasil kosong atau tidak sesuai harapan, periksa kata kunci kueri dan konfigurasi bidang indeks Anda.
Langkah 6: Debug permintaan
Saat kueri mengembalikan hasil yang tidak sesuai atau operasi gagal, cetak informasi jejak untuk mendapatkan detail lengkap permintaan dan respons:
echo $ret->traceInfo->tracer;Saat melaporkan masalah ke dukungan teknis OpenSearch melalui TradeManager atau grup dukungan DingTalk, sertakan output lengkap tracer.
Langkah selanjutnya
Jelajahi API lengkap: Lihat dokumentasi referensi SDK untuk semua parameter kueri yang tersedia, termasuk kondisi filter, kueri agregat, dan peringkat kustom.
Aktifkan saran drop-down: Gunakan
SuggestClientdanSuggestParamsBuilderdengan$suggestNameyang telah dikonfigurasi diConfig.inc.php.