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 tugas 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 telah diberikan ke 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 Anda 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 milik 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 kueri gulir iteratif menggunakan OpenSearch SDK for Java V4.0.0
Kueri gulir iteratif membebaskan Anda dari harus menentukan ID gulir untuk setiap kueri gulir. Kueri gulir tidak mendukung klausa aggregate, distinct, atau rank, dan hanya mendukung pengurutan berdasarkan satu bidang.
Catatan: Tentukan apakah terjadi kesalahan berdasarkan kode kesalahan dan pesan, bukan informasi status. Untuk informasi lebih lanjut tentang kesalahan, lihat Kode Kesalahan.
Kode Demo yang Disediakan oleh OpenSearch SDK for Java
package com.aliyun.opensearch;
import com.aliyun.opensearch.sdk.dependencies.com.google.common.collect.Lists;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.search.*;
import com.aliyun.opensearch.search.DeepPageingIterator;
import java.nio.charset.Charset;
public class testScrollIterator {
// Kueri gulir tidak mendukung klausa aggregate, distinct, atau rank, dan hanya mendukung pengurutan berdasarkan satu bidang.
private static String appName = "Nama aplikasi OpenSearch yang ingin Anda kelola";
private static String tableName = "Nama tabel tempat data akan diunggah";
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 penyandian file dan format penyandian 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(start); // Parameter start yang Anda tentukan dalam klausa config tidak berlaku untuk kueri gulir. Nilai default 0 digunakan.
config.setHits(5);// Tentukan jumlah dokumen yang akan ditampilkan di setiap halaman. Dalam contoh ini, angka tersebut diatur menjadi 5.
// Tentukan format data hasil yang dikembalikan. Format yang didukung adalah JSON dan FULLJSON. Dalam contoh ini, format data diatur menjadi FULLJSON.
config.setSearchFormat(SearchFormat.FULLJSON);
// Tentukan bidang yang akan dikembalikan dalam hasil pencarian.
config.setFetchFields(Lists.newArrayList("id", "name", "phone", "int_arr", "literal_arr", "float_arr", "cate_id"));
// Catatan: Parameter rerank_size dalam kelas Config ditentukan oleh metode setReRankSize dari kelas Rank.
// Buat objek SearchParams.
SearchParams searchParams = new SearchParams(config);
// Tentukan klausa query. Anda dapat menentukan beberapa kata kunci untuk melakukan kueri 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:'opensearch'");
// Tentukan kondisi filter.
searchParams.setFilter("cate_id<=3"); // Anda juga dapat menetapkan kondisi filter menggunakan kelas SearchParamsBuilder.
// Tentukan kondisi pengurutan.
Sort sorter = new Sort();
sorter.addToSortFields(new SortField("id", Order.DECREASE)); // Tentukan bidang berdasarkan mana dokumen akan diurutkan, dan metode pengurutan. Dalam contoh ini, dokumen diurutkan berdasarkan bidang id secara menurun.
// Tambahkan objek Sort sebagai parameter kueri.
searchParams.setSort(sorter);
// Buat objek DeepPaging untuk mengimplementasikan kueri gulir iteratif.
DeepPaging deep =new DeepPaging();
// Tambahkan objek DeepPaging sebagai parameter kueri.
searchParams.setDeepPaging(deep);
// Gunakan kelas DeepPageingIterator untuk mengimplementasikan kueri gulir iteratif. Dengan cara ini, Anda tidak perlu menentukan ID gulir.
DeepPageingIterator pagesIterator = new DeepPageingIterator(searcherClient, searchParams);
// Tetapkan interval iterasi, dalam milidetik. Interval default adalah 100 milidetik. Ini memastikan bahwa kecepatan paging sesuai dan tidak memberikan banyak tekanan pada layanan OpenSearch. Anda dapat menetapkan interval iterasi sesuai kebutuhan Anda.
pagesIterator.setPagingIntervals(80); // Interval iterasi, dalam milidetik.
// Tentukan apakah terjadi kesalahan berdasarkan kode kesalahan dan pesan, bukan informasi status. Untuk informasi lebih lanjut tentang kesalahan, lihat topik "Kode kesalahan".
try{
System.out.println("test");
while (pagesIterator.hasNext()) {
System.out.println("Informasi debugging:" + pagesIterator.next());
}
}catch(Exception ex){
System.out.println("Pesan kesalahan:" + ex.getMessage());
}
}
}