All Products
Search
Document Center

Tablestore:Exists query

Last Updated:May 07, 2026

Exists query, juga dikenal sebagai kueri NULL atau kueri nilai NULL, digunakan pada data sparse untuk menentukan apakah suatu kolom dalam baris tertentu ada. Misalnya, Anda dapat mengkueri baris-baris di mana nilai kolom address tidak kosong.

Catatan
  • Jika ingin melakukan exists query pada kolom Nested, gunakan nested query.

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

  • Sistem menganggap suatu kolom tidak ada jika salah satu kondisi berikut terpenuhi. Dalam contoh ini, kolom city digunakan.

    • Tipe kolom city dalam search index adalah tipe dasar seperti keyword. Jika suatu baris tidak memiliki kolom city di tabel data, search index menganggap kolom city tidak ada.

    • Tipe kolom city dalam search index adalah tipe dasar seperti keyword. Jika suatu baris memiliki nilai kolom city berupa array kosong di tabel data ("city" = "[]"), search index menganggap kolom city tidak ada.

Operasi API

Anda dapat memanggil operasi Search atau ParallelScan dan mengatur jenis kueri ke ExistsQuery untuk melakukan exists query.

Parameter

Parameter

Deskripsi

fieldName

Nama kolom yang ingin Anda kueri.

query

Jenis kueri. Atur parameter ini ke ExistsQuery.

getTotalCount

Menentukan apakah jumlah total baris yang memenuhi kondisi kueri dikembalikan. Nilai default parameter ini adalah false, yang berarti jumlah total baris yang memenuhi kondisi kueri tidak dikembalikan.

Jika Anda mengatur parameter ini ke true, performa kueri akan menurun.

tableName

Nama tabel data.

indexName

Nama search index.

columnsToGet

Menentukan apakah semua kolom dari setiap baris yang memenuhi kondisi kueri dikembalikan. Anda dapat mengonfigurasi field returnAll dan columns untuk parameter ini.

Nilai default field returnAll adalah false, yang berarti tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan field columns untuk menentukan kolom yang ingin dikembalikan. Jika Anda tidak menentukan kolom yang ingin dikembalikan, hanya kolom kunci primer yang dikembalikan.

Jika Anda mengatur field returnAll ke true, semua kolom dikembalikan.

Metode

Anda dapat melakukan exists query melalui Konsol Tablestore, CLI Tablestore, atau SDK Tablestore. Sebelum melakukannya, pastikan persiapan berikut telah dilakukan:

Gunakan Konsol Tablestore

  1. Buka tab Index Management.

    1. Login ke Konsol Table Store.

    2. Pada bilah navigasi atas, pilih kelompok sumber daya dan wilayah.

    3. Pada halaman Overview, klik nama instans atau klik Instance Management di kolom Actions.

    4. Pada tab Instance Details, di tab Data Table List, klik nama tabel data atau klik Index Management di kolom Actions.

  2. Pada tab Index Management, temukan Search Index target dan klik Search di kolom Actions.

  3. Pada kotak dialog Search, konfigurasikan kueri.

    1. Secara default, semua kolom dikembalikan. Untuk mengembalikan kolom tertentu, matikan Retrieve All Columns dan masukkan nama kolom yang dipisahkan koma.

      Catatan

      Secara default, Table Store mengembalikan kolom kunci primer dari tabel data.

    2. Pilih operator logika: And, Or, atau Not.

      Jika memilih And, kueri mengembalikan data yang memenuhi semua kondisi yang ditentukan. Jika memilih Or, kueri mengembalikan data yang memenuhi setidaknya salah satu kondisi yang ditentukan. Jika memilih Not, kueri mengembalikan data yang tidak memenuhi kondisi yang ditentukan.

    3. Pilih bidang indeks dan klik Add.

    4. Atur jenis kueri untuk bidang indeks ke Exists query (ExistsQuery).

    5. Secara default, pengurutan dimatikan. Untuk mengurutkan hasil berdasarkan bidang tertentu, aktifkan Enable Sorting, tambahkan bidang pengurutan, dan konfigurasikan urutan pengurutan.

    6. Secara default, agregasi dimatikan. Untuk melakukan agregasi statistik pada bidang tertentu, aktifkan Enable Aggregation, tambahkan bidang untuk agregasi, dan konfigurasikan pengaturan agregasi.

  4. Klik OK.

    Hasil kueri ditampilkan pada tab Index Management.

Gunakan CLI Tablestore

Anda dapat menggunakan CLI Tablestore untuk menjalankan perintah search guna mengkueri data menggunakan search index. Untuk informasi selengkapnya, lihat Search index.

  1. Jalankan perintah search untuk menggunakan search index bernama search_index guna mengkueri 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 permintaan:

    {
        "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 melakukan exists query: 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, digunakan Tablestore SDK for Java.

Kode contoh berikut menunjukkan cara mengkueri semua baris di mana kolom tertentu tidak kosong.

public static void existQuery(SyncClient syncClient) {
    // Kueri apakah field col_keyword ada. Field col_keyword bukan field Nested.
    {
        {
            // Contoh kode berikut menunjukkan cara mengkueri apakah field bertipe non-Nested ada.
            SearchQuery searchQuery = new SearchQuery();
            ExistsQuery existQuery = new ExistsQuery(); // Atur 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);
        }
        {
            // Buat builder.
            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}].
    {
        // Kueri apakah field induk col_nested ada. Field col_nested bertipe 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());
        }
        // Kueri apakah field col_nested.keyword ada. Field col_nested.keyword bertipe 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());
        }
    }
}

Penagihan

Mengkueri data menggunakan Search Index mengonsumsi throughput baca. Untuk informasi selengkapnya, lihat Metering dan penagihan Search Index.

FAQ

Referensi