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

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

最終更新日:Dec 28, 2024

環境変数の設定

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 を再起動します。

依存関係の追加

https://www.nuget.org/packages で依存関係パッケージをダウンロードします。

dotnet add package AlibabaCloud.TeaUtil --version  0.1.5
dotnet add package AlibabaCloud.OpenSearchUtil --version 1.0.2
dotnet add package Aliyun.Credentials --version  1.2.1
dotnet add package Tea --version 0.4.0

サンプルコード

次のサンプルコードは、C# 用 SDK を使用してドキュメントをプッシュする方法を示しています。

using System;
using System.Collections.Generic;
using AlibabaCloud.TeaUtil.Models;
using Tea;

namespace ConsoleApp2
{
    internal class Program
    {
        public static Dictionary<string, object> docBulk(Client opensearchClient, string appName,
            string tableName, List<object> docContent, Dictionary<string, string> header, RuntimeOptions runTime)
        {
            string pathName = "/v3/openapi/apps/" + appName + "/" + tableName + "/actions/bulk";
            try
            {
                return opensearchClient._request("POST", pathName, null, header, docContent, runTime);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }


        private static void Main(string[] args)
        {
            var runtime = new RuntimeOptions
            {
                ConnectTimeout = 5000,
                ReadTimeout = 10000,
                MaxAttempts = 0,
                Autoretry = false,
                IgnoreSSL = false,
                MaxIdleConns = 50
            };

            var config = new Config
            {
                // OpenSearch API のエンドポイントを指定します。エンドポイントは OpenSearch コンソールから取得できます。
                Endpoint = "opensearch-cn-hangzhou.aliyuncs.com",

                // リクエストプロトコルを指定します。有効な値:HTTPS および HTTP。
                Protocol = "HTTPS",

                // AccessKey ペアを指定します。
                // 環境変数から AccessKey ID と AccessKey シークレットを取得します。
                // このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
                AccessKeyId =  System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                AccessKeySecret = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),


                // 認証方法を指定します。デフォルト値:access_key。sts の値は、Resource Access Management (RAM) と Security Token Service (STS) に基づく認証を示します。
                // 有効な値:sts および access_key。
                Type = "access_key",

                // RAM と STS に基づく認証を使用する場合は、SecurityToken パラメーターを指定する必要があります。Alibaba Cloud RAM の AssumeRole 操作を呼び出して、STS トークンを取得できます。
                SecurityToken = "",
            };

            // OpenSearch クライアントインスタンスを作成します。
            var openSearch = new Client(config);

            // ドキュメントをプッシュするアプリケーションの名前を指定します。
            var appName = "appName";

            // ドキュメントをプッシュするテーブルの名前を指定します。
            var tableName = "tableName";

            // HTTP ヘッダーをカスタマイズします。
            var header = new Dictionary<string, string>();


            // プッシュするドキュメントを作成します。
            // timestamp パラメーターを指定して、ドキュメントの更新順序をカスタマイズできます。OpenSearch はこのパラメーターの値を使用して、同じ主キーフィールドを持つドキュメントを特定の順序で更新します。
            // このパラメーターが指定されていない場合、OpenSearch はドキュメントを受信した順序に基づいてドキュメントを更新します。
            List<object> documents = new List<object>();
            Dictionary<string, object> document = new Dictionary<string, object>();
            Dictionary<string, object> document1 = new Dictionary<string, object>();
            Dictionary<string, object> fields = new Dictionary<string, object>();
            fields.Add("id", DateTime.Now.Millisecond);
            fields.Add("text", DateTime.Now.Millisecond);
            fields.Add("title", DateTime.Now.Millisecond);
            fields.Add("cate", DateTime.Now.Millisecond);
            document.Add("cmd", "ADD");
            document.Add("fields", fields);
            document1.Add("cmd", "ADD");
            document1.Add("timestamp", DateTime.Now.Second);
            document1.Add("fields", fields);
            documents.Add(document);
            documents.Add(document1);


           
            try
            {
                docBulk(openSearch, appName, tableName, documents, header, runtime);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
    }
}
説明

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