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

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

最終更新日:Apr 09, 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 を再起動します。

サンプルコード

// このファイルは自動生成されています。編集しないでください。
package main

import (
    "fmt"
    util "github.com/alibabacloud-go/tea-utils/service"
    "github.com/alibabacloud-go/tea/tea"
    opensearch "main/client"
)

func main() {
    // リクエストを送信するためのクライアントインスタンスを作成します。
    // Endpoint:リージョン内の OpenSearch API のエンドポイント。
    // AccessKeyId および AccessKeySecret:認証に使用される AccessKey ペア。
    config := &opensearch.Config{
        Endpoint:         tea.String( "<Endpoint>"),
      
      	// AccessKey ペアを指定します。
        // 環境変数から AccessKey ID と AccessKey シークレットを取得します。
        // このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
        // AccessKey ID を指定します。
        AccessKeyId:     tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
        AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
    }

    // リクエストを送信するためのクライアントを作成します。
    client, _clientErr := opensearch.NewClient(config)

    // システムがクライアントの作成時に例外が発生した場合、_clientErr は nil ではありません。この場合、エラー情報を表示します。
    if _clientErr != nil {
        fmt.Println(_clientErr)
        return
    }

    // プッシュするドキュメントを作成します。
    // ドキュメントにはプライマリキーフィールドが含まれていることを確認してください。このフィールドは、ドキュメントのプッシュ先となるテーブルのプライマリキーフィールドとして使用されます。プライマリキーフィールドを指定しないと、ドキュメントを更新できません。
    // ドキュメントを更新するには、更新するフィールドとその値を指定します。ドキュメントのエンコードには UTF-8 を使用します。
    // OpenSearch では、ADD、UPDATE、または DELETE コマンドを使用して、ドキュメントの作成、更新、または削除を行うことができます。
    
    document1st := map[string]interface{}{
        "cmd": "ADD",
        "fields": map[string]interface{}{
            "id":       1, // ドキュメントのプライマリキーフィールド。
            "describe": "123456",  // ドキュメント内の通常のフィールド。
        },
    }

    // タイムスタンプフィールドを指定して、ドキュメントの更新順序をカスタマイズできます。OpenSearch は、このフィールドの値を使用して、同じプライマリキーフィールドを持つドキュメントを指定された順序で更新します。
    // このパラメータが指定されていない場合、OpenSearch は、OpenSearch がドキュメントを受信した順序に基づいてドキュメントを更新します。
    document2nd := map[string]interface{}{
        "cmd": "ADD",
        "timestamp": 1401342874778,
        "fields": map[string]interface{}{
            "id":       2,
            "describe": "123456",
        },
    }

    // ドキュメントを配列に追加します。各ドキュメントには、ドキュメントに対して実行される操作が含まれています。
    requestBody := []interface{}{document1st}

    // append メソッドを呼び出して、さらにドキュメントを追加できます。
    requestBody = append(requestBody, document2nd)

    // リクエストと接続プールを設定するために使用されるパラメータを指定します。
    runTime := &util.RuntimeOptions{
        ConnectTimeout: tea.Int(5000),
        ReadTimeout:    tea.Int(10000),
        Autoretry:      tea.Bool(false),
        IgnoreSSL:      tea.Bool(false),
        MaxIdleConns:   tea.Int(50),
    }

    // ドキュメントをプッシュするには、appName パラメータと tableName パラメータを指定する必要があります。
    // appName:ドキュメントのプッシュ先となるアプリケーションの名前またはバージョン情報。
    // tableName:ドキュメントのプッシュ先となるテーブルの名前。OpenSearch コンソールでアプリケーションのテーブルを表示できます。
    appName := "<appName>"
    tableName := "<tableName>"

    // リクエストを送信するためのメソッドを呼び出します。
    response, _requestErr := client.Request(
        tea.String("POST"),
        tea.String("/v3/openapi/apps/"+appName+"/"+tableName+"/actions/bulk"),
        nil,
        nil,
        requestBody,
        runTime)

    // システムがリクエストの送信時に例外が発生した場合、_requestErr は nil ではありません。この場合、エラー情報を表示します。
    if _requestErr != nil {
        fmt.Println(_requestErr)
        return
    }

    // 例外が発生しない場合は、レスポンスを表示します。
    fmt.Println(response)
}
説明

詳細については、「データの処理」をご参照ください。