Topik ini menjelaskan cara menggunakan Tablestore SDK for Java untuk melakukan operasi pada indeks pencarian dengan cepat.
Prasyarat
Klien telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi klien Tablestore.
Tabel data yang memenuhi kondisi berikut telah dibuat. Untuk informasi lebih lanjut, lihat Buat tabel data.
Parameter max versions diatur ke 1.
TTL diatur ke -1 atau pembaruan pada tabel data dilarang.
Prosedur
Langkah 1: Buat indeks pencarian
Anda dapat membuat indeks pencarian untuk mempercepat kueri data. Saat membuat indeks pencarian, tambahkan kolom yang ingin dikueri ke dalam indeks tersebut. Anda juga dapat mengonfigurasi opsi lanjutan seperti time to live (TTL) dan pra-pengurutan sesuai kebutuhan bisnis.
Contoh kode berikut menunjukkan cara membuat indeks pencarian untuk tabel data. Dalam contoh ini, indeks pencarian mencakup kolom Col_Keyword bertipe Keyword dan kolom Col_Long bertipe Long. Data dalam indeks pencarian diurutkan sebelumnya berdasarkan kunci utama tabel data dan tidak memiliki batas kedaluwarsa.
Untuk informasi tentang pemetaan tipe data antara indeks pencarian dan tabel data, lihat Tipe data.
private static void createSearchIndex(SyncClient client) {
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
// Tentukan nama tabel data.
request.setTableName("sampletable");
// Tentukan nama indeks pencarian.
request.setIndexName("samplesearchindex");
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
// Tentukan nama dan tipe kolom.
new FieldSchema("Col_Keyword", FieldType.KEYWORD),
new FieldSchema("Col_Long", FieldType.LONG)));
request.setIndexSchema(indexSchema);
// Panggil klien untuk membuat indeks pencarian.
client.createSearchIndex(request);
}Langkah 2: Kueri data menggunakan indeks pencarian
Saat menggunakan indeks pencarian untuk mengkueri data, pilih jenis kueri berdasarkan kebutuhan bisnis Anda. Tentukan kolom yang ingin dikembalikan serta metode pengurutan data hasil kueri.
Contoh kode berikut menunjukkan cara mengkueri baris di mana nilai kolom Col_Keyword cocok secara tepat dengan "hangzhou" dalam tabel:
/**
* Kueri baris di mana nilai kolom Col_Keyword tepat cocok dengan "hangzhou" dalam tabel.
* @param client
*/
private static void termQuery(SyncClient client) {
SearchQuery searchQuery = new SearchQuery();
TermQuery termQuery = new TermQuery(); // Atur jenis kueri ke TermQuery.
termQuery.setFieldName("Col_Keyword"); // Tentukan nama kolom yang ingin Anda kueri.
termQuery.setTerm(ColumnValue.fromString("hangzhou")); // Tentukan kata kunci yang ingin Anda cocokkan.
searchQuery.setQuery(termQuery);
//searchQuery.setGetTotalCount(true); // Atur parameter GetTotalCount ke true untuk mengembalikan jumlah total baris yang memenuhi kondisi kueri.
SearchRequest searchRequest = new SearchRequest("sampletable", "samplesearchindex", searchQuery);
// Anda dapat mengonfigurasi parameter columnsToGet untuk menentukan kolom yang ingin Anda kembalikan atau tentukan bahwa semua kolom dikembalikan. Jika Anda tidak mengonfigurasi parameter ini, hanya kolom kunci utama yang dikembalikan.
//SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
//columnsToGet.setReturnAll(true); // Atur ReturnAll ke true untuk mengembalikan semua kolom.
//columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Konfigurasikan parameter Columns untuk menentukan kolom yang ingin Anda kembalikan.
//searchRequest.setColumnsToGet(columnsToGet);
SearchResponse resp = client.search(searchRequest);
//System.out.println("TotalCount: " + resp.getTotalCount()); // Tentukan bahwa jumlah total baris yang memenuhi kondisi kueri bukan jumlah baris yang dikembalikan ditampilkan.
System.out.println("Baris: " + resp.getRows());
}Referensi
Jenis kueri yang didukung oleh indeks pencarian: kueri cocok semua, kueri tepat, kueri terms, kueri rentang, kueri awalan, kueri akhiran, kueri wildcard, kueri cocok, kueri frasa cocok, kueri eksis, kueri Boolean, kueri geo (kueri geo-jarak, kueri kotak pembatas geo, kueri poligon geo, yang hanya dapat digunakan untuk bidang geo), kueri bersarang (yang hanya dapat digunakan untuk bidang Bersarang), dan kueri vektor KNN.
Menganalisis data menggunakan indeks pencarian: Agregasi.
Ekspor data menggunakan indeks pencarian: pemindaian paralel.