配置環境變量
配置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
重要
阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維,具體操作,請參見創建RAM用戶。
創建AccessKey ID和AccessKey Secret,請參考創建AccessKey。
如果您使用的是RAM用戶的AccessKey,請確保主賬號已授權AliyunServiceRoleForOpenSearch服務關聯角色,請參考OpenSearch-行業算法版服務關聯角色,相關文檔參考訪問鑒權規則。
請不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
Linux和macOS系統配置方法:
執行以下命令,其中,
<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系統配置方法
新建環境變量文件,添加環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準備好的AccessKey ID和AccessKey Secret。
重啟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);
搜索功能Demo(全)
<?php
header("Content-Type:text/html;charset=utf-8");
//引入頭文件
require_once("Config.inc.php");
use OpenSearch\Client\SearchClient;
use OpenSearch\Util\SearchParamsBuilder;
$searchClient = new SearchClient($client);
//創建參數對象,并指定對應參數
$params = new SearchParamsBuilder();
$params->setStart(0);
$params->setHits(20);
//設置應用名稱
$params->setAppName('替換為應用名');
//設置查詢query
$params->setQuery("name:'搜索'");
//設置返回格式
$params->setFormat("fulljson");
//添加排序
$params->addSort('id', SearchParamsBuilder::SORT_DECREASE);
$params->addSort('RANK', SearchParamsBuilder::SORT_DECREASE);
//設置文檔過濾條件
$params->setFilter('id>0');
//添加distinct子句
$params->addDistinct(
array('key' => 'cate_id', 'distTimes' => 1, 'distCount' => 1, 'reserved' => 'false')
);
//添加摘要
$params->addSummary(
array('summary_field' => 'name', 'summary_len' => 100, 'summary_ellipsis' => "。。。", 'summary_snippet' => 2, 'summary_element_prefix' => '<em>', 'summary_element_postfix' => '</em>')
);
//$params->addSummary(
// array('summary_field' => 'name', 'summary_len' => 200)
//);
//設置自定義參數
//$params->setCustomParam('a', 'b');
//$params->setCustomParam('c', 'd');
//$params->setRouteValue('1');
//設置下拉提示關聯搜索請求的from_request_id
$params->setCustomParam('from_request_id','159851481919726888064081');
//添加aggregate子句
$params->addAggregate(
array('groupKey' => 'cate_id', 'aggFun' => 'count()', 'range' => '1', 'aggSamplerThresHold' => 1, 'aggSamplerStep' => 10, 'maxGroup' => 10)
);
// $params->addAggregate(
// array('groupKey' => 'cate_id', 'aggFun' => 'count()', 'range' => '1', 'aggFilter' => 'id>1', 'aggSamplerThresHold' => 1, 'aggSamplerStep' => 10, 'maxGroup' => 10)
// );
//指定粗排表達式
$params->setFirstRankName('default');
//指定精排表達式
$params->setSecondRankName('default');
//設置需返回哪些字段
$params->setFetchFields(array('id','name','phone','int_arr','literal_arr','float_arr','cate_id'));
//添加查詢分析功能
$params->addQueryProcessor('替換為查詢分析名稱');
//添加raw_query參數
$params->setRawQuery("字符串");
//執行查詢并返回信息
$ret = $searchClient->execute($params->build());
//打印返回信息的內容
print_r(json_decode($ret->result,true));
//打印調試信息
echo $ret->traceInfo->tracer;
文檔內容是否對您有幫助?