Todos los productos
Search
Centro de documentos

OpenSearch:Código de demostración para enviar documentos e implementar funciones de búsqueda

Última actualización: Sep 05, 2026

Configurar variables de entorno

Configure las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Importante
  • El par de accesskey de una cuenta de Alibaba Cloud permite acceder a todas las operaciones de la API. Se recomienda usar un usuario de Resource Access Management (RAM) para invocar operaciones de la API o realizar tareas rutinarias de operación y mantenimiento. Para obtener información sobre cómo usar un usuario de RAM, consulte Create a RAM user.

  • Para obtener información sobre cómo crear un par de accesskey, consulte Create an AccessKey pair.

  • Si usa el par de accesskey de un usuario de RAM, asegúrese de haber otorgado los permisos obligatorios al rol AliyunServiceRoleForOpenSearch mediante su cuenta de Alibaba Cloud. Para más información, consulte AliyunServiceRoleForOpenSearch y Access authorization rules.

  • Se recomienda no incluir su par de accesskey en materiales fácilmente accesibles para otros, como el código del proyecto. De lo contrario, su par de accesskey podría filtrarse y comprometer la seguridad de los recursos de su cuenta.

  • Linux y macOS

    Ejecute los comandos a continuación. Reemplace <access_key_id> y <access_key_secret> con el AccessKey ID y el AccessKey secret del usuario de RAM que use.

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows

    1. Cree un archivo de variables de entorno, agregue las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET al archivo y, a continuación, establezca las variables de entorno con su AccessKey ID y su AccessKey secret.

    2. Reinicie Windows para que el par de accesskey surta efecto.

Crear un archivo de encabezado que contenga configuraciones

Las configuraciones que especifique en este archivo de encabezado se usan para enviar y consultar documentos. Estas incluyen el par de accesskey, el endpoint de la API, el nombre de la aplicación, el nombre del modelo de sugerencias desplegables y otras opciones.

$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');<?php
// Import the header file.
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;

// Specify your AccessKey pair.
// Obtain the AccessKey ID and AccessKey secret from environment variables. 
// You must configure environment variables before you run this code. For more information, see the "Configure environment variables" section of this topic.
// Specify the AccessKey ID.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
// Specify the AccessKey secret.
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
// Specify the endpoint of the OpenSearch API in your region. You can obtain the endpoint on the details page of the application in the OpenSearch console.
$endPoint = '<region endPoint>';
// Specify the application name.
$appName = '<app name>';
// Specify the name of the drop-down suggestion model.
$suggestName = '<suggest name>';
// Enable the debugging mode.
$options = array('debug' => true);
// Create an OpenSearchClient object.
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);

Enviar documentos

En el código a continuación, se cargan 10 documentos a una aplicación de OpenSearch.

<?php
header("Content-Type:text/html;charset=utf-8");
// Import the header file.
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
use OpenSearch\Client\SearchClient;
use OpenSearch\Util\SearchParamsBuilder;

// Specify the table to which you want to push documents.
$tableName = 'The table to which you want to push documents';
// Create a DocumentClient object.
$documentClient = new DocumentClient($client);
// Add the documents to be pushed to an array.
$docs_to_upload = array();
for ($i = 0; $i < 10; $i++){
    $item = array();
    $item['cmd'] = 'ADD';
    $item["fields"] = array(
        "id" => $i + 1,
        "name" => "Search for KFC".$i
        );
    $docs_to_upload[] = $item;
}
// Encode the documents.
$json = json_encode($docs_to_upload);
// Call the push method to push the documents.
$ret = $documentClient->push($json, $appName, $tableName);

// Hibernate the thread for 10 seconds. If you push documents to the primary table of an advanced application, 90% of the documents can be synchronized within 10 seconds and 99% of the documents are available within 10 minutes. However, this is not applicable to document push to secondary tables. 
sleep(10);

// Create a SearchClient object.
$searchClient = new SearchClient($client);
// Create a SearchParamsBuilder object.
$params = new SearchParamsBuilder();
// Specify the start parameter in the config clause.
$params->setStart(0);
// Specify the hits parameter in the config clause.
$params->setHits(20);
// Specify the application for which you want to implement search features.
$params->setAppName('The application name');
// Specify a search query.
$params->setQuery("name: 'Search'");
// Specify the data format of returned results. In this example, the data format is set to FULLJSON.
$params->setFormat("fulljson");
// Specify a field based on which documents are sorted.
$params->addSort('RANK', SearchParamsBuilder::SORT_DECREASE);
// Run the query and return the results.
$ret = $searchClient->execute($params->build());
// Decode the results that are in the JSON format.
print_r(json_decode($ret->result,true));
// Display debugging information.
echo $ret->traceInfo->tracer;