すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:ドキュメントをプッシュするためのデモコード

最終更新日:Apr 04, 2025

環境変数を構成する

ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成します。

重要
  • Alibaba Cloud アカウントの AccessKey ペアを使用すると、すべての API 操作にアクセスできます。 API 操作の呼び出しや日常の O&M の実行には、Resource Access Management (RAM) ユーザーを使用することをお勧めします。 RAM ユーザーの使用方法については、「RAM ユーザーを作成する」をご参照ください。

  • AccessKey ペアの作成方法については、「AccessKey ペアを作成する」をご参照ください。

  • RAM ユーザーの AccessKey ペアを使用する場合は、Alibaba Cloud アカウントを使用して、AliyunServiceRoleForOpenSearch ロールに必要な権限が付与されていることを確認してください。 詳細については、「AliyunServiceRoleForOpenSearch」および「アクセス認証ルール」をご参照ください。

  • プロジェクトコードなど、他の人が簡単にアクセスできる資料に AccessKey ペアを含めないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のリソースが安全でなくなる可能性があります。

  • Linux および macOS

    次のコマンドを実行します。 <access_key_id> および <access_key_secret> を、使用する RAM ユーザーの AccessKey ID と AccessKey シークレットに置き換えます。

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

    1. 環境変数ファイルを作成し、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数をファイルに追加してから、環境変数を AccessKey ID と AccessKey シークレットに設定します。

    2. AccessKey ペアを有効にするには、Windows を再起動します。

構成を含むヘッダーファイルを作成する

このヘッダーファイルで指定する構成は、ドキュメントのプッシュとクエリに使用されます。 構成には、AccessKey ペア、API エンドポイント、アプリケーション名、検索候補モデルの名前、およびオプションが含まれます。

<?php
// ヘッダーファイルをインポートします。
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;

// AccessKey ペアを指定します。
// 環境変数から AccessKey ID と AccessKey シークレットを取得します。
// このコードを実行する前に、環境変数を構成する必要があります。 詳細については、このトピックの「環境変数を構成する」セクションを参照してください。
// Accesskey ID を指定します。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
// AccessKey シークレットを指定します。
$secret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
// リージョン内の OpenSearch API のエンドポイントを指定します。 エンドポイントは、OpenSearch コンソールのアプリケーションの詳細ページで取得できます。
$endPoint = '<region endPoint>';
// アプリケーション名を指定します。
$appName = '<app name>';
// 検索候補モデルの名前を指定します。
$suggestName = '<suggest name>';
// デバッグモードを有効にします。
$options = array('debug' => true);
// OpenSearchClient オブジェクトを作成します。
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);

ドキュメントをプッシュする

ドキュメントを追加する

次のサンプルコードでは、10 個のドキュメントが OpenSearch アプリケーションにアップロードされます。

<?php
// ヘッダーファイルをインポートします。
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// ドキュメントをプッシュするテーブルを指定します。
$tableName = 'ドキュメントをプッシュするテーブル';
// DocumentClient オブジェクトを作成します。
$documentClient = new DocumentClient($client);
// プッシュするドキュメントを配列に追加します。
$docsToUpload = array();
for ($i = 0; $i < 10; $i++){
    $item = array();
    $item['cmd'] = 'ADD';
    $item["fields"] = array(
        "id" => $i + 1,
        "name" => "Search".$i
        );
    $docsToUpload[] = $item;
}
// プッシュするドキュメントを JSON 文字列にエンコードします。
$json = json_encode($docsToUpload);
// push メソッドを呼び出して、ドキュメントをプッシュします。
$ret = $documentClient->push($json, $appName, $tableName);

ドキュメントを更新する

<?php
// ヘッダーファイルをインポートします。
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// ドキュメントをプッシュするテーブルを指定します。
$tableName = 'ドキュメントをプッシュするテーブル';
// DocumentClient オブジェクトを作成します。
$documentClient = new DocumentClient($client);
// プッシュするドキュメントを配列に追加します。
$docsToUpload = array();
$item = array();
// UPDATE 操作は、Advanced エディションの OpenSearch アプリケーションのみでサポートされています。
$item['cmd'] = 'UPDATE';
$item["fields"] = array(
    "id" => 1,
    "name" => "OpenSearch"
);
$docsToUpload[] = $item;
// プッシュするドキュメントを JSON 文字列にエンコードします。
$json = json_encode($docsToUpload);
// push メソッドを呼び出して、ドキュメントをプッシュします。
$ret = $documentClient->push($json, $appName, $tableName);

ドキュメントを削除する

<?php
// ヘッダーファイルをインポートします。
require_once("Config.inc.php");
use OpenSearch\Client\DocumentClient;
// ドキュメントをプッシュするテーブルを指定します。
$tableName = 'ドキュメントをプッシュするテーブル';
// DocumentClient オブジェクトを作成します。
$documentClient = new DocumentClient($client);
// プッシュするドキュメントを配列に追加します。
$docsToUpload = array();
$item = array();
$item['cmd'] = 'DELETE';
$item["fields"] = array(
    "id" => 1, // 削除するドキュメントのプライマリキー ID を入力します。
);
$docsToUpload[] = $item;
// プッシュするドキュメントを JSON 文字列にエンコードします。
$json = json_encode($docsToUpload);
// push メソッドを呼び出して、ドキュメントをプッシュします。
$ret = $documentClient->push($json, $appName, $tableName);