All Products
Search
Document Center

Tablestore:Ambil indeks Lastpoint

Last Updated:Jul 06, 2025

Indeks pencarian mempercepat pengambilan indeks Lastpoint dan menyediakan kemampuan kueri multi-dimensi serta analisis statistik. Topik ini menjelaskan cara menggunakan Tablestore SDK for Java untuk mengambil data dalam indeks Lastpoint melalui indeks pencarian.

Catatan Penggunaan

Fitur indeks Lastpoint didukung oleh Tablestore SDK for Java V5.17.1 atau versi lebih baru. Untuk menggunakan fitur ini, gunakan Tablestore SDK for Java V5.17.1 atau versi terbaru.

Catatan

Untuk informasi tentang cara mengunduh versi baru Tablestore SDK for Java, lihat Riwayat Versi Tablestore SDK for Java.

Prasyarat

Sebuah indeks Lastpoint telah dibuat untuk tabel deret waktu. Untuk informasi lebih lanjut, lihat Buat indeks Lastpoint.

Prosedur

1. Buat indeks pencarian

Kode sampel berikut memberikan contoh cara membuat indeks pencarian untuk indeks Lastpoint. Untuk informasi tentang skenario sampel dan data, lihat Lampiran.

Catatan

Dalam contoh ini, nilai dari bidang _tags adalah array string yang terdiri dari tag. Kami sarankan Anda menyetel tipe bidang yang dipetakan di indeks pencarian ke array Kata Kunci (Keyword), yang memudahkan untuk menanyakan tag dalam bidang _tags.

private static void createSearchIndex(SyncClient client) {
    CreateSearchIndexRequest createSearchIndexRequest = new CreateSearchIndexRequest();
    createSearchIndexRequest.setTableName("");
    createSearchIndexRequest.setIndexName("");
    IndexSchema indexSchema = new IndexSchema();
    indexSchema.setFieldSchemas(Arrays.asList(
            new FieldSchema("_#h", FieldType.KEYWORD).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("_m_name", FieldType.KEYWORD).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("_data_source", FieldType.KEYWORD).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("_tags", FieldType.KEYWORD).setIndex(true).setEnableSortAndAgg(true).setIsArray(true),
            new FieldSchema("_time", FieldType.LONG).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("gps", FieldType.GEO_POINT).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("speed", FieldType.DOUBLE).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("status", FieldType.KEYWORD).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("total_mileage", FieldType.DOUBLE).setIndex(true).setEnableSortAndAgg(true),
            new FieldSchema("remaining_mileage", FieldType.DOUBLE).setIndex(true).setEnableSortAndAgg(true)
    ));
    createSearchIndexRequest.setIndexSchema(indexSchema);
    client.createSearchIndex(createSearchIndexRequest);
}

2. Ambil data menggunakan indeks pencarian

Kode sampel berikut memberikan contoh cara menggunakan fitur kueri rentang indeks pencarian.

Dalam contoh ini, indeks pencarian digunakan untuk mengambil baris di mana nilai bidang speed lebih besar dari 20,0 dalam indeks Lastpoint.

private static void rangeQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    RangeQuery rangeQuery = new RangeQuery(); // Setel jenis kueri ke RangeQuery.
    rangeQuery.setFieldName("speed");  // Tentukan bidang yang sesuai.
    rangeQuery.greaterThan(ColumnValue.fromDouble(20.0));  // Tentukan kondisi kueri untuk bidang tersebut. Hanya baris di mana nilai bidang lebih besar dari 20.0 yang memenuhi kondisi kueri.
    searchQuery.setGetTotalCount(true);
    searchQuery.setQuery(rangeQuery);
    // Tentukan bahwa baris yang memenuhi kondisi kueri diurutkan berdasarkan kolom speed secara menurun.
    FieldSort fieldSort = new FieldSort("speed");
    fieldSort.setOrder(SortOrder.DESC);
    searchQuery.setSort(new Sort(Arrays.asList((Sort.Sorter)fieldSort)));
    searchQuery.setGetTotalCount(true); // Tentukan bahwa jumlah total baris yang memenuhi kondisi kueri dikembalikan.

    SearchRequest searchRequest = new SearchRequest("", "", 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); // Tentukan bahwa semua kolom dikembalikan.
    searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    System.out.println("TotalCount: " + resp.getTotalCount()); // Cetak jumlah total baris yang cocok, bukan jumlah baris yang dikembalikan.
    System.out.println("Row: " + resp.getRows());
}

FAQ

Referensi

Fitur inti yang disediakan oleh indeks pencarian mencakup kueri berdasarkan kolom kunci utama atau non-kunci utama, kueri Boolean, kueri geo, pencarian teks lengkap, kueri fuzzy, kueri awalan, kueri bersarang, runtuh (distinct), pengurutan, kueri cocok semua, dan agregasi. Untuk informasi lebih lanjut, lihat Fitur.

Lampiran

Dalam skenario Internet of Vehicles (IoV), sensor melaporkan data deret waktu kendaraan ke cloud. Pengguna dapat menyimpan, menanyakan, dan menganalisis data deret waktu untuk memenuhi persyaratan bisnis, seperti laporan status kendaraan, penempatan kendaraan, manajemen lalu lintas, dan pencerminan layar jalur kendaraan.

Tabel berikut menunjukkan data sampel dalam tabel deret waktu.

Catatan

Dalam contoh ini, bidang _m_name, _data_source, dan _tags adalah pengenal deret waktu, yang menentukan nama pengukuran, sumber data, dan informasi tag deret waktu, masing-masing. Bidang _time menentukan waktu pelaporan data. Bidang gps, speed, status, total_mileage, dan remaining_mileage adalah data deret waktu dalam deret waktu, yang menentukan koordinat GPS kendaraan, kecepatan kendaraan, status kendaraan, total jarak tempuh kendaraan, dan jarak tempuh tersisa kendaraan, masing-masing.

_m_name

_data_source

_tags

_time

gps

speed

status

total_mileage

remaining_mileage

Platform A

sensor1

["region=hangzhou","car_model=sedan","number_plate=ZheA D7512*","color=white"]

1.730.422.800.000.000

30.245853,120.178564

0

Idle

20.000

450

Platform A

sensor1

["region=hangzhou","car_model=sedan","number_plate=ZheA D7512*","color=white"]

1.730.423.400.000.000

30.245853,120.178564

0

Idle

20.000

450

Platform A

sensor2

["region=hangzhou","car_model=suv","number_plate=ZheC 72B2*","color=black"]

1.730.779.200.000.000

30.245278,120.150269

50

Active

15.000

300

Platform A

sensor2

["region=hangzhou","car_model=suv","number_plate=ZheC 72B2*","color=black"]

1.730.779.800.000.000

30.245853,120.213654

80

Active

15.050

250

Platform B

sensor3

["region=hangzhou","car_model=sedan","number_plate=ZheB 121*9","color=blue"]

1.730.862.000.000.000

30.246013,120.124470

60

Active

18.200

300

Platform B

sensor3

["region=hangzhou","car_model=sedan","number_plate=ZheB 121*9","color=blue"]

1.730.862.600.000.000

30.246022,120.124460

0

Idle

18.230

270

Tablestore secara otomatis menyinkronkan data titik terbaru dalam deret waktu di tabel deret waktu ke indeks Lastpoint. Tabel berikut menunjukkan data sampel dalam indeks Lastpoint.

_#h

_m_name

_data_source

_tags

_time

gps

speed

status

total_mileage

remaining_mileage

4c#Platform A#07

Platform A

sensor1

["region=hangzhou","car_model=sedan","number_plate=ZheA D7512*","color=white"]

1.730.423.400.000.000

30.245853,120.178564

0

Idle

20.000

450

25#Platform A#ae

Platform A

sensor2

["region=hangzhou","car_model=suv","number_plate=ZheC 72B2*","color=black"]

1.730.779.800.000.000

30.245853,120.213654

80

Active

15.050

250

b2#Platform B#4b

Platform B

sensor3

["region=hangzhou","car_model=sedan","number_plate=ZheB 121*9","color=blue"]

1.730.862.600.000.000

30.246022,120.124460

0

Idle

18.230

270