Découvrez comment configurer et utiliser le SDK PHP pour envoyer des documents vers OpenSearch, avec des exemples de code pour ajouter, mettre à jour et supprimer des données.
Configurer les variables d'environnement
Définissez les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET.
La paire AccessKey d'un compte Alibaba Cloud permet d'accéder à toutes les opérations API. Nous vous recommandons d'utiliser un utilisateur Resource Access Management (RAM) pour appeler les opérations API ou effectuer les tâches de maintenance courantes. Pour savoir comment utiliser un utilisateur RAM, consultez la rubrique Créer un utilisateur RAM.
Pour savoir comment créer une paire AccessKey, consultez la rubrique Créer une paire AccessKey.
Si vous utilisez la paire AccessKey d'un utilisateur RAM, assurez-vous que les autorisations requises sont accordées au rôle AliyunServiceRoleForOpenSearch via votre compte Alibaba Cloud. Pour plus d'informations, consultez les rubriques AliyunServiceRoleForOpenSearch et Règles d'autorisation d'accès.
Nous vous déconseillons d'inclure votre paire AccessKey dans des supports facilement accessibles à des tiers, tels que le code du projet. Dans le cas contraire, vos identifiants pourraient être divulgués et compromettre la sécurité des ressources de votre compte.
-
Linux et macOS
Exécutez les commandes suivantes. Remplacez
<access_key_id>et<access_key_secret>par l'AccessKey ID et l'AccessKey secret de l'utilisateur RAM que vous utilisez.export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret> -
Windows
Créez un fichier de variables d'environnement, ajoutez-y les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET, puis définissez-les avec votre AccessKey ID et votre AccessKey secret.
Redémarrez Windows pour que la paire AccessKey prenne effet.
Créer un fichier d'en-tête Config
Le fichier Config est un fichier d'en-tête utilisé pour les opérations de requête et d'envoi de documents. Il contient des paramètres tels que votre paire AccessKey, l'hôte et le nom de l'application.
<?php
// Import the header file.
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
// User identity information.
// Read the AccessKey ID and AccessKey secret from environment variables.
// Before you run the sample code, you must configure environment variables. For more information, see the "Set environment variables" section in this topic.
// Replace with your AccessKey ID.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
// Replace with your AccessKey secret.
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
// Replace with the endpoint of your region. You can find the endpoint on the Basic Information page of your application in the console.
$endPoint = '<region_endpoint>';
// Replace with your application name.
$appName = '<app_name>';
// Enable the debug mode.
$options = array('debug' => true);
// Create an OpenSearchClient object.
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);
Envoyer des données
Code d'envoi de document
Ajouter des données
L'exemple de code suivant envoie 10 documents vers une application OpenSearch.
<?php
// Reference the header file.
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// Specify the table in the application to which you want to push data.
$tableName = 'your_table_name';
// Create a DocumentClient object for document operations.
$documentClient = new DocumentClient($client);
// Add data.
$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 the documents in the JSON format.
$json = json_encode($docs_to_upload);
// Submit the documents.
$ret = $documentClient->push($json, $appName, $tableName);
Mettre à jour des données
<?php
// Reference the header file.
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// Specify the table in the application to which you want to push data.
$tableName = 'your_table_name';
// Create a DocumentClient object for document operations.
$documentClient = new DocumentClient($client);
// Prepare the data.
$docs_to_upload = array();
$item = array();
// The UPDATE command is supported only in OpenSearch Pro.
$item['cmd'] = 'UPDATE';
$item["fields"] = array(
"id" => 1,
"name" => "OpenSearch"
);
$docs_to_upload[] = $item;
// Encode the documents in the JSON format.
$json = json_encode($docs_to_upload);
// Submit the documents.
$ret = $documentClient->push($json, $appName, $tableName);
Supprimer des données
<?php
// Reference the header file.
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// Specify the table in the application to which you want to push data.
$tableName = 'your_table_name';
// Create a DocumentClient object for document operations.
$documentClient = new DocumentClient($client);
// Prepare the data.
$docs_to_upload = array();
$item = array();
$item['cmd'] = 'DELETE';
$item["fields"] = array(
"id" => 1, // Specify the primary key ID of the data that you want to delete.
);
$docs_to_upload[] = $item;
// Encode the documents in the JSON format.
$json = json_encode($docs_to_upload);
// Submit the documents.
$ret = $documentClient->push($json, $appName, $tableName);
Démo d'envoi et de recherche de données
Code d'envoi de document
L'exemple suivant envoie 10 documents vers une application OpenSearch, puis effectue une recherche sur les données.
<?php
header("Content-Type:text/html;charset=utf-8");
// Reference the header file.
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
use OpenSearch\Client\SearchClient;
use OpenSearch\Util\SearchParamsBuilder;
// Specify the table in the application to which you want to push data.
$tableName = 'your_table_name';
// Create a DocumentClient object for document operations.
$documentClient = new DocumentClient($client);
// Add data.
$docs_to_upload = array();
for ($i = 0; $i < 10; $i++){
$item = array();
$item['cmd'] = 'ADD';
$item["fields"] = array(
"id" => $i + 1,
"name" => "search_kfc".$i
);
$docs_to_upload[] = $item;
}
// Encode the data.
$json = json_encode($docs_to_upload);
// Submit the documents.
$ret = $documentClient->push($json, $appName, $tableName);
// Wait for 10 seconds. For OpenSearch Pro, 90% of incremental data in the primary table takes effect within 10 seconds, and 99% takes effect within 10 minutes. The latency for attached tables is not guaranteed.
sleep(10);
// Instantiate a search class.
$searchClient = new SearchClient($client);
// Instantiate a search parameter class.
$params = new SearchParamsBuilder();
// Set the start value for the config clause.
$params->setStart(0);
// Set the hit value for the config clause.
$params->setHits(20);
// Specify an application for the search.
$params->setAppName('your_app_name');
// Specify the search keyword.
$params->setQuery("name:'search'");
// Set the format of the search result to JSON.
$params->setFormat("fulljson");
// Add a sort field.
$params->addSort('RANK', SearchParamsBuilder::SORT_DECREASE);
// Execute the search and obtain the result.
$ret = $searchClient->execute($params->build());
// Decode the JSON string.
print_r(json_decode($ret->result,true));
// Print the debug information.
echo $ret->traceInfo->tracer;