全部產品
Search
文件中心

OpenSearch:push推送Demo

更新時間:Jul 13, 2024

配置環境變數

配置環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET

重要
  • 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運,具體操作,請參見建立RAM使用者

  • 建立AccessKey ID和AccessKey Secret,請參考建立AccessKey

  • 如果您使用的是RAM使用者的AccessKey,請確保主帳號已授權AliyunServiceRoleForOpenSearch服務關聯角色,請參考OpenSearch-行業演算法版服務關聯角色,相關文檔參考訪問鑒權規則

  • 請不要將AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

  • LinuxmacOS系統配置方法:

    執行以下命令,其中, <access_key_id>需替換為您RAM使用者的AccessKey ID,<access_key_secret>替換為您RAM使用者的AccessKey Secret。

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows系統配置方法

    1. 建立環境變數檔案,添加環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,並寫入已準備好的AccessKey ID和AccessKey Secret。

    2. 重啟Windows系統生效。

建立Config配置標頭檔

Config 頁面中的內容將作為後續的查詢推送文檔的標頭檔,其中包含AK,host,應用程式名稱,下拉名稱及 options 選項,等重要參數資訊

<?php
//引入標頭檔
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;

// 使用者識別資訊
// 從環境變數讀取配置的AccessKey ID和AccessKey Secret,
// 運行程式碼範例前必須先配置環境變數,參考文檔上面“配置環境變數”步驟
// 替換對應的access key id
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
//替換對應的access secret
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
//替換為對應地區api訪問地址,可參考應用控制台,基本資料中api地址
$endPoint = '<region endPoint>';
//替換為應用程式名稱
$appName = '<app name>';
//替換為下拉提示名稱
$suggestName = '<suggest name>';
//開啟偵錯模式
$options = array('debug' => true);
//建立OpenSearchClient用戶端對象
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);

上傳文檔代碼

新增資料

以下我們向 opensearch應用中上傳了10條文檔。

<?php
//引用頭部檔案
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
//設定資料需推送到對應應用表中
$tableName = '替換應用表名';
//建立文檔操作client
$documentClient = new DocumentClient($client);
//添加資料
$docsToUpload = array();
for ($i = 0; $i < 10; $i++){
    $item = array();
    $item['cmd'] = 'ADD';
    $item["fields"] = array(
        "id" => $i + 1,
        "name" => "搜尋".$i
        );
    $docsToUpload[] = $item;
}
//將文檔編碼成json格式
$json = json_encode($docsToUpload);
//提交推送文檔
$ret = $documentClient->push($json, $appName, $tableName);

更新資料

<?php
//引用頭部檔案
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
//設定資料需推送到對應應用表中
$tableName = '替換應用表名';
//建立文檔操作client
$documentClient = new DocumentClient($client);
//添加資料
$docsToUpload = array();
$item = array();
//進階版才支援UPDATE功能
$item['cmd'] = 'UPDATE';
$item["fields"] = array(
    "id" => 1,
    "name" => "OpenSearch"
);
$docsToUpload[] = $item;
//將文檔編碼成json格式
$json = json_encode($docsToUpload);
//提交推送文檔
$ret = $documentClient->push($json, $appName, $tableName);

刪除資料

<?php
//引用頭部檔案
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
//設定資料需推送到對應應用表中
$tableName = '替換應用表名';
//建立文檔操作client
$documentClient = new DocumentClient($client);
//添加資料
$docsToUpload = array();
$item = array();
$item['cmd'] = 'DELETE';
$item["fields"] = array(
    "id" => 1,   //直接填寫要刪除資料的主鍵id即可
);
$docsToUpload[] = $item;
//將文檔編碼成json格式
$json = json_encode($docsToUpload);
//提交推送文檔
$ret = $documentClient->push($json, $appName, $tableName);