環境変数を設定する
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
環境変数ファイルを作成し、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数をファイルに追加し、環境変数を AccessKey ID と AccessKey シークレットに設定します。
AccessKey ペアを有効にするために、Windows を再起動します。
OpenSearch SDK for Java V4.0.0 を使用してドロップダウン候補モデルを呼び出すデモコード
package com.example.opensearch;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.SuggestionClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.nio.charset.Charset;
public class SuggestDemo {
static private final String host = "ドロップダウン候補モデルを呼び出すアプリケーションのリージョンにある OpenSearch API のエンドポイント"; // ドロップダウン候補モデルを呼び出すアプリケーションのリージョンにある OpenSearch API のエンドポイント
OpenSearch openSearch;
OpenSearchClient openSearchClient;
static private final byte hits = 8; // 返されるドロップダウン候補の最大数を指定します。
static private final String suggestionName = "ドロップダウン候補モデルの名前"; // ドロップダウン候補モデルの名前を指定します。
@Before
public void setUp() {
// AccessKey ペアを指定します。
// 環境変数から AccessKey ID と AccessKey シークレットを取得します。サンプルコードを実行する前に、環境変数を設定する必要があります。
String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// OpenSearch オブジェクトを作成します。
openSearch = new OpenSearch(accesskey, secret, host);
openSearchClient = new OpenSearchClient(openSearch);
}
@Test
public void TestEnv() {
// ファイルのエンコーディング形式とデフォルトのエンコーディング形式を取得します。
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
// ドロップダウン候補オブジェクトを作成します。
SuggestionClient suggestionClient = new SuggestionClient(suggestionName, openSearchClient);
String query = "検索クエリ"; // 検索クエリ
try {
SuggestParams suggestParams = new SuggestParams();
suggestParams.setQuery(query); // 検索クエリ。
suggestParams.setHits(hits); // 返されるドロップダウン候補の最大数を指定します。
suggestParams.setUserId("12345678"); // ユーザーID。
// デフォルトでは、OpenSearch は検索クエリ内の用語を中国語の同音異義語に置き換えてドキュメントを取得します。リクエストで re_search パラメータを設定することで、この機能を設定できます。
// このパラメータを ReSearch.findByValue(1) に設定すると、この機能は無効になります。このパラメータを ReSearch.findByValue(0) に設定するか、このパラメータを指定しないと、この機能は無効になります。
suggestParams.setReSearch(ReSearch.findByValue(1));
SearchResult result = suggestionClient.execute(suggestParams);
System.out.println(result); // 取得結果を表示します。
} catch (OpenSearchException e) {
e.printStackTrace();
} catch (OpenSearchClientException e) {
e.printStackTrace();
}
}
@After
public void clean() {
openSearch.clear();
}
}