全部产品
Search
文档中心

Tablestore:Kueri Exists

更新时间:Jul 06, 2025

Kueri Exists, juga dikenal sebagai kueri NULL atau kueri nilai NULL, digunakan dalam data jarang untuk menentukan apakah kolom dari suatu baris tersedia. Sebagai contoh, Anda dapat meminta baris di mana nilai kolom alamat tidak kosong.

Catatan
  • Untuk melakukan kueri exists pada kolom Nested, gunakan kueri nested.

  • Untuk memeriksa apakah kolom berisi nilai kosong, gunakan ExistsQuery bersama dengan mustNotQueries dari BoolQuery.

  • Jika salah satu kondisi berikut terpenuhi, sistem menganggap bahwa kolom tidak ada. Contoh ini menggunakan kolom city.

    • Jika tipe kolom city dalam indeks pencarian adalah tipe dasar seperti kata kunci dan kolom city tidak ada dalam tabel data, indeks pencarian menganggap bahwa kolom city tidak ada.

    • Jika tipe kolom city dalam indeks pencarian adalah tipe dasar seperti kata kunci dan nilai kolom city adalah array kosong ("city" = "[]"), indeks pencarian menganggap bahwa kolom city tidak ada.

Operasi API

Anda dapat memanggil operasi Search atau ParallelScan dan menetapkan jenis kueri ke ExistsQuery untuk menjalankan kueri exists.

Parameter

Parameter

Deskripsi

fieldName

Nama kolom yang ingin Anda kueri.

kueri

Jenis kueri. Tetapkan parameter ini ke ExistsQuery.

getTotalCount

Menentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default dari parameter ini adalah false, yang menentukan bahwa jumlah total baris yang memenuhi kondisi kueri tidak dikembalikan.

Jika Anda menetapkan parameter ini ke true, performa kueri akan terganggu.

tableName

Nama tabel data.

indexName

Nama indeks pencarian.

columnsToGet

Menentukan apakah akan mengembalikan semua kolom setiap baris yang memenuhi kondisi kueri. Anda dapat mengonfigurasi bidang returnAll dan columns untuk parameter ini.

Nilai default dari bidang returnAll adalah false, yang menentukan bahwa tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan bidang columns untuk menentukan kolom yang ingin Anda kembalikan. Jika Anda tidak menentukan kolom yang ingin Anda kembalikan, hanya kolom kunci utama yang dikembalikan.

Jika Anda menetapkan bidang returnAll ke true, semua kolom dikembalikan.

Metode

Anda dapat menjalankan kueri exists melalui konsol Tablestore, CLI Tablestore, atau SDK Tablestore. Pastikan langkah-langkah persiapan berikut telah dilakukan sebelumnya:

Gunakan konsol Tablestore

  1. Pergi ke tab Indexes.

    1. Masuk ke konsol Tablestore.

    2. Di bilah navigasi atas, pilih grup sumber daya dan wilayah.

    3. Di halaman Overview, klik nama instance yang ingin Anda kelola atau pilih Manage Instance di kolom Actions instance.

    4. Di tab Tables dari tab Instance Details, klik nama tabel data atau pilih Indexes di kolom Tindakan tabel data.

  2. Di tab Indexes, temukan indeks pencarian yang ingin Anda gunakan untuk meminta data dan klik Manage Data di kolom Actions.

  3. Di kotak dialog Search, tentukan kondisi kueri.

    1. Secara default, sistem mengembalikan semua kolom atribut. Untuk mengembalikan kolom atribut tertentu, matikan All Columns dan tentukan kolom atribut yang ingin dikembalikan. Pisahkan beberapa kolom atribut dengan koma (,).

      Catatan

      Secara default, sistem mengembalikan semua kolom kunci utama dari tabel data.

    2. Pilih operator logika And, Or, atau Not sesuai kebutuhan bisnis Anda.

      Jika Anda memilih operator logika And, data yang memenuhi kondisi kueri akan dikembalikan. Jika Anda memilih operator Or dan menentukan kondisi kueri tunggal, data yang memenuhi kondisi tersebut akan dikembalikan. Jika Anda memilih operator logika Or dan menentukan beberapa kondisi kueri, data yang memenuhi salah satu kondisi tersebut akan dikembalikan. Jika Anda memilih operator logika Not, data yang tidak memenuhi kondisi kueri akan dikembalikan.

    3. Pilih bidang indeks dan klik Add.

    4. Tetapkan parameter Jenis Kueri ke ExistsQuery(ExistsQuery).

    5. Secara default, fitur pengurutan dinonaktifkan. Jika Anda ingin mengurutkan hasil kueri berdasarkan bidang tertentu, aktifkan Sort dan tentukan bidang serta urutan pengurutan.

    6. Secara default, fitur agregasi dinonaktifkan. Jika Anda ingin mengumpulkan statistik pada bidang tertentu, aktifkan Collect Statistics, tentukan bidang yang ingin dianalisis, dan konfigurasikan informasi yang diperlukan untuk pengumpulan statistik.

  4. Klik OK.

    Data yang memenuhi kondisi kueri ditampilkan dalam urutan tertentu di tab Indexes.

Gunakan CLI Tablestore

Anda dapat menggunakan CLI Tablestore untuk menjalankan perintah search guna meminta data menggunakan indeks pencarian. Untuk informasi lebih lanjut, lihat Indeks pencarian.

  1. Jalankan perintah search untuk menggunakan indeks pencarian search_index guna meminta data dan mengembalikan semua kolom terindeks dari setiap baris yang memenuhi kondisi kueri.

    search -n search_index --return_all_indexed
  2. Masukkan kondisi kueri sesuai petunjuk:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "ExistsQuery",
            "Query": {
                "FieldName": "col_keyword"
            }
        }
    }

Gunakan SDK Tablestore

Anda dapat menggunakan SDK Tablestore berikut untuk menjalankan kueri exists: Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET, dan Tablestore SDK for PHP. Dalam contoh ini, Tablestore SDK for Java digunakan.

Kode sampel berikut menunjukkan cara meminta semua baris di mana kolom yang ditentukan tidak kosong.

public static void existQuery(SyncClient syncClient) {
    // Meminta apakah bidang col_keyword ada. Bidang col_keyword bukan bidang Nested. 
    {
        {
            // Kode sampel berikut memberikan contoh tentang cara meminta apakah bidang tipe non-Nested ada. 
            SearchQuery searchQuery = new SearchQuery();
            ExistsQuery existQuery = new ExistsQuery(); // Tetapkan jenis kueri ke ExistsQuery. 
            existQuery.setFieldName("col_keyword");
            searchQuery.setQuery(existQuery);
            SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
            SearchResponse resp = syncClient.search(searchRequest);
        }
        {
            // Konstruksi pembuat. 
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.exists("col_keyword"))
                                    .limit(10)
                                    .build())
                    .build());
        }
    }
    // Struktur Nested adalah [{"keyword":"a","long":123}]. 
    {
        // Meminta apakah bidang induk col_nested ada. Bidang col_nested adalah tipe Nested. 
        {
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.nested()
                                            .scoreMode(ScoreMode.None)
                                            .path("col_nested")
                                            .query(QueryBuilders.exists("col_nested")))
                                    .limit(10)
                                    .getTotalCount(false)
                                    .build())
                    .build());
        }
        // Meminta apakah bidang col_nested.keyword ada. Bidang col_nested.keyword adalah tipe Nested. 
        {
            SearchResponse resp = syncClient.search(SearchRequest.newBuilder()
                    .indexName("<SEARCH_INDEX_NAME>")
                    .tableName("<TABLE_NAME>")
                    .searchQuery(
                            SearchQuery.newBuilder()
                                    .query(QueryBuilders.nested()
                                            .scoreMode(ScoreMode.None)
                                            .path("col_nested")
                                            .query(QueryBuilders.exists("col_nested.keyword")))
                                    .limit(10)
                                    .getTotalCount(false)
                                    .build())
                    .build());
        }
    }
}

Aturan penagihan

Saat Anda menggunakan indeks pencarian untuk meminta data, Anda dikenakan biaya untuk throughput baca yang dikonsumsi. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih dari indeks pencarian.

FAQ

Referensi

  • Saat Anda menggunakan indeks pencarian untuk meminta data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri prefix, kueri range, kueri wildcard, kueri fuzzy, kueri Boolean, kueri geo, kueri nested, kueri vektor KNN, dan kueri exists. Anda dapat memilih metode kueri berdasarkan kebutuhan bisnis Anda untuk meminta data dari berbagai dimensi.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri dengan menggunakan fitur pengurutan dan pemisahan halaman. Untuk informasi lebih lanjut, lihat Lakukan pengurutan dan pemisahan halaman.

    Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe yang ditentukan muncul hanya sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).

  • Jika Anda ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi dari operasi Search atau menjalankan pernyataan SQL. Sebagai contoh, Anda dapat memperoleh nilai minimum dan maksimum, jumlah, dan total baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Jika Anda ingin mendapatkan semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian paralel.