配置环境变量
配置环境变量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);
上传文档代码
新增数据
以下我们向 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" => "开放搜索"
);
$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);