Konfigurasikan variabel lingkungan
Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
Pasangan AccessKey dari akun Alibaba Cloud dapat digunakan untuk mengakses semua Operasi API. Kami menyarankan Anda menggunakan Pengguna Resource Access Management (RAM) untuk memanggil Operasi API atau melakukan O&M rutin. Untuk informasi tentang cara menggunakan Pengguna RAM, lihat Buat Pengguna RAM.
Untuk informasi tentang cara membuat pasangan AccessKey, lihat Buat Pasangan AccessKey.
Jika Anda menggunakan pasangan AccessKey dari Pengguna RAM, pastikan bahwa izin yang diperlukan diberikan kepada peran AliyunServiceRoleForOpenSearch menggunakan akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat AliyunServiceRoleForOpenSearch dan Aturan Otorisasi Akses.
Kami menyarankan agar Anda tidak menyertakan pasangan AccessKey dalam materi yang mudah diakses oleh orang lain, seperti kode proyek. Jika tidak, pasangan AccessKey Anda mungkin bocor dan sumber daya di akun Anda menjadi tidak aman.
Linux dan macOS
Jalankan perintah berikut. Ganti
<access_key_id>dan<access_key_secret>dengan ID AccessKey dan Rahasia AccessKey dari Pengguna RAM yang Anda gunakan.export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>Windows
Buat file variabel lingkungan, tambahkan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET ke file tersebut, lalu atur variabel lingkungan ke ID AccessKey dan Rahasia AccessKey Anda.
Mulai ulang Windows agar pasangan AccessKey berlaku.
Kode demo untuk mengimplementasikan fitur analisis query menggunakan OpenSearch SDK for Java V3.1.3
package com.aliyun.opensearch;
import com.alibaba.fastjson.JSONArray;
import com.aliyun.opensearch.sdk.dependencies.com.google.common.collect.Lists;
import com.aliyun.opensearch.sdk.dependencies.org.json.JSONObject;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import com.aliyun.opensearch.sdk.generated.search.Config;
import com.aliyun.opensearch.sdk.generated.search.SearchFormat;
import com.aliyun.opensearch.sdk.generated.search.SearchParams;
import com.aliyun.opensearch.sdk.generated.search.general.SearchResult;
import com.aliyun.opensearch.search.SearchParamsBuilder;
import com.aliyun.opensearch.search.SearchResultDebug;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
public class testQueryProcessor {
private static String appName = "Nama aplikasi OpenSearch yang ingin Anda kelola";
private static String host = "Endpoint API OpenSearch di wilayah Anda";
public static void main(String[] args) {
// Tentukan pasangan AccessKey Anda.
// Dapatkan ID AccessKey dan Rahasia AccessKey dari variabel lingkungan. Anda harus mengonfigurasi variabel lingkungan sebelum menjalankan kode contoh ini.
String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Dapatkan format pengkodean file dan format pengkodean default.
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
// Buat objek OpenSearch.
OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
// Gunakan objek OpenSearch sebagai parameter untuk membuat objek OpenSearchClient.
OpenSearchClient serviceClient = new OpenSearchClient(openSearch);
// Gunakan objek OpenSearchClient sebagai parameter untuk membuat objek SearcherClient.
SearcherClient searcherClient = new SearcherClient(serviceClient);
// Buat objek Config dan gunakan klausa config untuk mengonfigurasi parameter seperti nama aplikasi, parameter terkait paging, dan format data hasil yang dikembalikan.
Config config = new Config(Lists.newArrayList(appName));
config.setStart(0);
config.setHits(5);
// Tentukan format data hasil yang dikembalikan. OpenSearch SDK for Java V3.1.2 mendukung XML dan JSON tetapi tidak FULLJSON. Format FULLJSON didukung oleh OpenSearch SDK for Java V3.1.3.
config.setSearchFormat(SearchFormat.FULLJSON);
// Buat objek SearchParams.
SearchParams searchParams = new SearchParams(config);
// Tentukan klausa query. Anda dapat menentukan beberapa kata kunci untuk melakukan query berdasarkan beberapa bidang indeks. Dalam hal ini, Anda harus menentukan bidang indeks dalam satu panggilan setQuery. Jika Anda menentukan setiap bidang indeks dalam panggilan setQuery terpisah, klausa terakhir akan menimpa klausa sebelumnya.
searchParams.setQuery("name:'kfc'");// Jika kata kunci query adalah kfc, hasil yang dikembalikan adalah dokumen yang terkait dengan KFC.
List<String> qpname = new ArrayList<String>();
qpname.add("qptest"); // Tetapkan nama untuk penganalisis query.
searchParams.setQueryProcessorNames(qpname);
// Buat objek SearchParamsBuilder. Sebagai kelas utilitas SearchParams, kelas SearchParamsBuilder memungkinkan Anda mengonfigurasi parameter terkait query dengan mudah.
SearchParamsBuilder paramsBuilder = SearchParamsBuilder.create(searchParams);
// Jalankan query dan kembalikan hasilnya.
SearchResult searchResult;
try {
searchResult = searcherClient.execute(paramsBuilder);
String result = searchResult.getResult();
JSONObject obj = new JSONObject(result);
// Tentukan apakah telah terjadi kesalahan. Jika tidak ada kesalahan, hasil pencarian dikembalikan. Jika terjadi kesalahan, kode berikut dijalankan:
if(obj.get("errors").toString().length()>2){
JSONArray jsonarr = JSONArray.parseArray(obj.get("errors").toString());
System.out.println("error code:"+jsonarr.getJSONObject(0).get("code"));
System.out.println("error message:"+jsonarr.getJSONObject(0).get("message"));
}else{
// Tampilkan hasil pencarian.
System.out.println("output:"+obj.toString());
// Anda mungkin memerlukan informasi tentang alamat permintaan untuk debugging.
SearchResultDebug srd = searcherClient.executeDebug(searchParams);
System.out.println(srd.getRequestUrl().toString());
}
} catch (OpenSearchException e) {
e.printStackTrace();
} catch (OpenSearchClientException e) {
e.printStackTrace();
}
}
}