push推送Demo
配置環(huán)境變量
配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
阿里云賬號(hào)AccessKey擁有所有API的訪問(wèn)權(quán)限,建議您使用RAM用戶進(jìn)行API訪問(wèn)或日常運(yùn)維,具體操作,請(qǐng)參見(jiàn)創(chuàng)建RAM用戶。
創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考創(chuàng)建AccessKey。
如果您使用的是RAM用戶的AccessKey,請(qǐng)確保主賬號(hào)已授權(quán)AliyunServiceRoleForOpenSearch服務(wù)關(guān)聯(lián)角色,請(qǐng)參考OpenSearch-行業(yè)算法版服務(wù)關(guān)聯(lián)角色,相關(guān)文檔參考訪問(wèn)鑒權(quán)規(guī)則。
請(qǐng)不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。
Linux和macOS系統(tǒng)配置方法:
執(zhí)行以下命令,其中,
<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系統(tǒng)配置方法
新建環(huán)境變量文件,添加環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。
重啟Windows系統(tǒng)生效。
創(chuàng)建Config配置頭文件
Config 頁(yè)面中的內(nèi)容將作為后續(xù)的查詢推送文檔的頭文件,其中包含AK,host,應(yīng)用名,下拉名稱及 options 選項(xiàng),等重要參數(shù)信息
<?php
//引入頭文件
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
// 用戶識(shí)別信息
// 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret,
// 運(yùn)行代碼示例前必須先配置環(huán)境變量,參考文檔上面“配置環(huán)境變量”步驟
// 替換對(duì)應(yīng)的access key id
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
//替換對(duì)應(yīng)的access secret
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
//替換為對(duì)應(yīng)區(qū)域api訪問(wèn)地址,可參考應(yīng)用控制臺(tái),基本信息中api地址
$endPoint = '<region endPoint>';
//替換為應(yīng)用名
$appName = '<app name>';
//開(kāi)啟調(diào)試模式
$options = array('debug' => true);
//創(chuàng)建OpenSearchClient客戶端對(duì)象
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);
上傳文檔代碼
新增數(shù)據(jù)
以下我們向 opensearch應(yīng)用中上傳了10條文檔。
<?php
//引用頭部文件
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
//設(shè)置數(shù)據(jù)需推送到對(duì)應(yīng)應(yīng)用表中
$tableName = '替換應(yīng)用表名';
//創(chuàng)建文檔操作client
$documentClient = new DocumentClient($client);
//添加數(shù)據(jù)
$docs_to_upload = array();
for ($i = 0; $i < 10; $i++){
$item = array();
$item['cmd'] = 'ADD';
$item["fields"] = array(
"id" => $i + 1,
"name" => "搜索".$i
);
$docs_to_upload[] = $item;
}
//將文檔編碼成json格式
$json = json_encode($docs_to_upload);
//提交推送文檔
$ret = $documentClient->push($json, $appName, $tableName);
更新數(shù)據(jù)
<?php
//引用頭部文件
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
//設(shè)置數(shù)據(jù)需推送到對(duì)應(yīng)應(yīng)用表中
$tableName = '替換應(yīng)用表名';
//創(chuàng)建文檔操作client
$documentClient = new DocumentClient($client);
//添加數(shù)據(jù)
$docs_to_upload = array();
$item = array();
//高級(jí)版才支持UPDATE功能
$item['cmd'] = 'UPDATE';
$item["fields"] = array(
"id" => 1,
"name" => "開(kāi)放搜索"
);
$docs_to_upload[] = $item;
//將文檔編碼成json格式
$json = json_encode($docs_to_upload);
//提交推送文檔
$ret = $documentClient->push($json, $appName, $tableName);
刪除數(shù)據(jù)
<?php
//引用頭部文件
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
//設(shè)置數(shù)據(jù)需推送到對(duì)應(yīng)應(yīng)用表中
$tableName = '替換應(yīng)用表名';
//創(chuàng)建文檔操作client
$documentClient = new DocumentClient($client);
//添加數(shù)據(jù)
$docs_to_upload = array();
$item = array();
$item['cmd'] = 'DELETE';
$item["fields"] = array(
"id" => 1, //直接填寫要?jiǎng)h除數(shù)據(jù)的主鍵id即可
);
$docs_to_upload[] = $item;
//將文檔編碼成json格式
$json = json_encode($docs_to_upload);
//提交推送文檔
$ret = $documentClient->push($json, $appName, $tableName);