全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Pencarian

更新时间:Nov 10, 2025

TairSearch adalah struktur data pencarian teks penuh internal dari Tair yang menggunakan sintaks kueri mirip Elasticsearch (ES-LIKE).

Ikhtisar

TairSearch menawarkan fitur-fitur berikut:

  • Latensi rendah dan performa tinggi: menyediakan kemampuan penulisan dan pencarian teks penuh dalam tingkat milidetik berdasarkan daya komputasi ultra-tinggi Tair. Untuk informasi selengkapnya, lihat Dokumen Putih Performa TairSearch.

  • Pembaruan inkremental dan parsial: mendukung pembaruan parsial indeks dan pembaruan dokumen inkremental, termasuk penambahan, pembaruan, penghapusan, serta penambahan nilai otomatis pada bidang.

  • Sintaks fleksibel: menyediakan urutan pengurutan kustom dan mendukung sintaks JSON untuk kueri bool, match, term, serta paging—mirip dengan Elasticsearch.

  • Kueri agregasi: mendukung agregasi terms, metrics, dan filter. Untuk informasi selengkapnya, lihat Agregasi.

  • Saran penyelesaian otomatis: mendukung pencocokan fuzzy berbasis awalan dan penyelesaian otomatis untuk operasi pencarian.

  • Alat analisis kustom: menyediakan berbagai alat analisis canggih, termasuk alat bawaan untuk bahasa utama dunia seperti Inggris (Standard dan Stop) dan Tiongkok (Jieba dan IK). Fitur ini juga mendukung alat analisis kustom dengan kamus dan kata berhenti yang ditentukan pengguna. Untuk informasi selengkapnya, lihat Alat analisis pencarian.

  • Kueri indeks shard: memungkinkan Anda menggunakan perintah TFT.MSEARCH untuk mencari beberapa indeks shard dan mengembalikan set hasil yang diagregasi.

  • Kompresi dokumen: mendukung penyimpanan dokumen terkompresi guna mengurangi penggunaan memori. Fitur ini dinonaktifkan secara default.

  • Cache kueri: menyimpan hasil kueri terbaru dalam cache untuk meningkatkan efisiensi kueri data panas.

Catatan rilis

Instans berbasis DRAM yang kompatibel dengan Redis 5.0

  1. Pada 11 Maret 2022, TairSearch dirilis bersama Tair V1.7.27.

  2. Pada 24 Mei 2022, Tair V1.8.5 dirilis untuk menambahkan dukungan fitur agregasi TairSearch.

  3. Pada 6 September 2022, Tair V5.0.15 dirilis untuk menambahkan dukungan perintah TFT.MSEARCH.

  4. Pada 13 Januari 2023, Tair V5.0.25 dirilis untuk menambahkan dukungan alat analisis.

  5. Pada 15 Maret 2023, Tair V5.0.28 dirilis untuk menambahkan dukungan cache kueri, kompresi dokumen, dan perintah TFT.ANALYZER.

  6. Pada 12 Juni 2023, Tair V5.0.35 dirilis untuk menambahkan dukungan dokumen bertipe data ARRAY dan algoritma peringkat kemiripan Okapi BM25.

Instans berbasis DRAM yang kompatibel dengan Redis 6.0

  1. Pada 7 Februari 2023, Tair V6.2.4.1 dirilis untuk menambahkan dukungan TairSearch.

    Tair V6.2.4.1 memiliki semua fitur yang disediakan oleh instans berbasis DRAM kompatibel Redis 5.0 versi Tair V5.0.25.

  2. Pada 14 Maret 2023, Tair V6.2.5.0 dirilis untuk menambahkan dukungan cache kueri, kompresi dokumen, dan perintah TFT.ANALYZER.

    Tair V6.2.5.0 memiliki semua fitur yang disediakan oleh instans berbasis DRAM kompatibel Redis 5.0 versi Tair V5.0.28.

  3. Pada 12 Juni 2023, Tair V6.2.7.3 dirilis untuk menambahkan dukungan dokumen bertipe data ARRAY dan algoritma peringkat kemiripan Okapi BM25.

    Tair V6.2.7.3 memiliki semua fitur yang disediakan oleh instans berbasis DRAM kompatibel Redis 5.0 versi Tair V5.0.35.

  4. Pada 21 Desember 2023, Tair V23.12.1.2 dirilis dengan dukungan perintah TFT.EXPLAINSCORE.

Instans berbasis DRAM yang kompatibel dengan Redis 7.0

  1. Pada 22 Juli 2024, Tair V24.7.0.0 dirilis untuk menambahkan dukungan TairSearch.

Praktik terbaik

Prasyarat

Instans tersebut adalah instans Tair optimasi memori, dan versi yang didukung adalah sebagai berikut:

  • Untuk instans berbasis DRAM yang kompatibel dengan Redis 5.0, versi minor harus 1.7.27 atau lebih baru.

  • Untuk instans berbasis DRAM yang kompatibel dengan Redis 6.0, versi minor harus 6.2.4.1 atau lebih baru.

  • Untuk instans berbasis DRAM yang kompatibel dengan Redis 7.0, semua versi minor didukung.

Catatan

Versi minor terbaru menyediakan lebih banyak fitur dan stabilitas yang lebih tinggi. Kami menyarankan Anda memperbarui instans ke versi minor terbaru. Untuk informasi selengkapnya, lihat Memperbarui versi minor instans. Jika instans Anda merupakan instans kluster atau instans pemisahan baca/tulis, kami menyarankan Anda memperbarui node proxy dalam instans ke versi minor terbaru untuk memastikan semua perintah dapat dijalankan sebagaimana mestinya.

Peringatan

  • Data TairSearch yang ingin Anda kelola disimpan pada instans Tair.

  • Untuk mengurangi penggunaan memori, kami menyarankan Anda melakukan langkah-langkah berikut:

    • Saat membuat indeks, atur index ke true untuk bidang dokumen guna menentukan bidang tersebut sebagai bidang terindeks. Untuk bidang dokumen lainnya, atur index ke false.

    • Tentukan objek yang berisi pola includes dan excludes dalam parameter _source untuk memfilter bidang dokumen yang tidak diperlukan dan menyimpan hanya bidang yang dibutuhkan.

    • Jika Anda ingin membagi dokumen menjadi token, pilih alat analisis yang sesuai untuk mencegah pemisahan yang tidak perlu dan peningkatan penggunaan memori.

    • Jika dokumen terlalu besar, gunakan fitur kompresi dokumen untuk secara otomatis mengompresi dan mendekompresi dokumen.

  • Jangan menambahkan terlalu banyak dokumen ke satu indeks. Sebaiknya tambahkan dokumen ke beberapa indeks. Kami menyarankan agar jumlah dokumen per indeks tetap di bawah 5 juta untuk mencegah kesenjangan data pada instans kluster, menyeimbangkan permintaan baca/tulis, serta mengurangi jumlah large key dan hotkey.

Daftar perintah

Tabel 1. Perintah pencarian teks penuh

Perintah

Sintaks

Deskripsi

TFT.CREATEINDEX

TFT.CREATEINDEX index mappings settings

Membuat indeks dan pemetaan untuk indeks tersebut. Sintaks yang digunakan untuk membuat pemetaan mirip dengan sintaks yang digunakan untuk membuat pemetaan eksplisit di Elasticsearch. Anda harus membuat indeks sebelum dapat menambahkan dokumen ke indeks tersebut.

TFT.UPDATEINDEX

TFT.UPDATEINDEX index mappings settings

Menambahkan bidang properties ke indeks yang ditentukan atau memodifikasi pengaturan indeks.

TFT.GETINDEX

TFT.GETINDEX index

Memperoleh konten pemetaan suatu indeks.

TFT.ADDDOC

TFT.ADDDOC index document [WITH_ID doc_id]

Menambahkan dokumen ke indeks. Anda dapat menentukan ID unik untuk dokumen dalam indeks menggunakan WITH_ID. Jika ID dokumen sudah ada, ID yang ada akan ditimpa. Jika Anda tidak menentukan WITH_ID (default), ID dokumen akan dibuat secara otomatis.

TFT.MADDDOC

TFT.MADDDOC index document doc_id [document1 doc_id1] ...

Menambahkan beberapa dokumen ke indeks. Setiap dokumen harus memiliki ID dokumen yang ditentukan oleh doc_id. Jika sebuah dokumen gagal ditambahkan karena format tidak valid, semua dokumen yang terlibat dalam perintah tersebut tidak akan ditambahkan ke indeks.

TFT.UPDATEDOCFIELD

TFT.UPDATEDOCFIELD index doc_id document

Memperbarui dokumen yang ditentukan oleh doc_id dalam indeks. Jika bidang dokumen yang ingin Anda perbarui adalah bidang terpetakan dan terindeks, bidang tersebut harus memiliki tipe data yang sama dengan yang digunakan dalam pemetaan. Jika bidang tersebut bukan bidang terindeks, bidang yang diperbarui dapat memiliki tipe data apa pun.

Catatan

Jika bidang sudah ada, dokumen diperbarui. Jika bidang belum ada, bidang tersebut ditambahkan. Jika dokumen tidak ada, dokumen dibuat secara otomatis. Dalam kasus ini, perintah setara dengan TFT.ADDDOC.

TFT.DELDOCFIELD

TFT.DELDOCFIELD index doc_id field [field1 field2 ...]

Menghapus bidang yang ditentukan dari dokumen yang ditentukan oleh doc_id dalam indeks. Jika bidang tersebut merupakan bidang terindeks, informasi bidang tersebut juga dihapus dari indeks.

Catatan

Jika bidang yang ditentukan tidak ada (misalnya, bidang yang difilter oleh _source), operasi gagal.

TFT.INCRLONGDOCFIELD

TFT.INCRLONGDOCFIELD index doc_id field increment

Menambahkan increment ke bidang yang ditentukan dalam dokumen yang ditentukan oleh doc_id dalam indeks. Increment dapat berupa bilangan bulat positif atau negatif. Tipe data bidang hanya dapat berupa LONG atau INTEGER.

Catatan

Jika dokumen tidak ada, dokumen dibuat secara otomatis. Dalam kasus ini, nilai bidang yang ada adalah 0, dan nilai bidang yang diperbarui diperoleh dengan menambahkan nilai increment ke nilai bidang yang ada. Jika bidang tidak ada (misalnya, difilter oleh _source), operasi gagal.

TFT.INCRFLOATDOCFIELD

TFT.INCRFLOATDOCFIELD index doc_id field increment

Menambahkan increment ke bidang yang ditentukan dalam dokumen yang ditentukan oleh doc_id dalam indeks. Increment dapat berupa bilangan titik mengambang positif atau negatif. Tipe data bidang hanya dapat berupa DOUBLE.

Catatan

Jika dokumen tidak ada, dokumen dibuat secara otomatis. Dalam kasus ini, nilai bidang yang ada adalah 0, dan nilai bidang yang diperbarui diperoleh dengan menambahkan nilai increment ke nilai bidang yang ada. Jika bidang tidak ada (misalnya, difilter oleh _source), operasi gagal.

TFT.GETDOC

TFT.GETDOC index doc_id

Memperoleh konten dokumen yang ditentukan oleh doc_id dalam indeks.

TFT.EXISTS

TFT.EXISTS index doc_id

Memeriksa apakah dokumen yang ditentukan oleh doc_id ada dalam indeks.

TFT.DOCNUM

TFT.DOCNUM index

Memperoleh jumlah dokumen dalam indeks.

TFT.SCANDOCID

TFT.SCANDOCID index cursor [MATCH *value*] [COUNT count]

Memperoleh ID semua dokumen dalam indeks.

TFT.DELDOC

TFT.DELDOC index doc_id [doc_id] ...

Menghapus dokumen yang ditentukan oleh doc_id dari indeks. Beberapa ID dokumen dapat ditentukan.

TFT.DELALL

TFT.DELALL index

Menghapus semua dokumen dari indeks tetapi mempertahankan indeks tersebut.

TFT.ANALYZER

TFT.ANALYZER analyzer_name text [INDEX index_name] [SHOW_TIME]

Menanyakan efek tokenisasi dari alat analisis yang ditentukan.

TFT.SEARCH

TFT.SEARCH index query

Mencari dokumen dalam indeks berdasarkan pernyataan kueri. Sintaks kueri mirip dengan sintaks Elasticsearch.

TFT.MSEARCH

TFT.MSEARCH index_count index [index1] ... query

Menanyakan dokumen dalam beberapa indeks yang memiliki mappings dan settings diatur ke nilai yang sama menggunakan klausa kueri dan mengumpulkan hasil dari indeks-indeks tersebut. Kemudian, hasilnya dinilai, diurutkan, diagregasi, dan dikembalikan.

TFT.EXPLAINCOST

TFT.EXPLAINCOST index query

Menanyakan durasi eksekusi pernyataan kueri. Keluaran mencakup jumlah dokumen yang terlibat dalam kueri dan jumlah waktu yang dikonsumsi oleh setiap operasi dalam kueri.

TFT.EXPLAINSCORE

TFT.EXPLAINSCORE index query [doc_id] ...

Menanyakan informasi skor terperinci dari dokumen yang dihasilkan dari eksekusi pernyataan kueri. Anda dapat menggunakan perintah ini untuk memahami proses perhitungan skor dokumen. Kemudian, Anda dapat mengoptimalkan kueri pencarian untuk meningkatkan efektivitas pengambilan dokumen.

DEL

DEL key [key ...]

Anda dapat menggunakan perintah Redis DEL asli untuk menghapus satu atau beberapa kunci TairSearch.

Tabel 2. Perintah penyelesaian otomatis

Perintah

Sintaks

Deskripsi

TFT.ADDSUG

TFT.ADDSUG index text weight [text weight] ...

Menambahkan satu atau beberapa teks penyelesaian otomatis dan bobotnya ke indeks yang ditentukan.

TFT.DELSUG

TFT.DELSUG index text [text] ...

Menghapus satu atau beberapa entri teks penyelesaian otomatis dari indeks yang ditentukan.

TFT.SUGNUM

TFT.SUGNUM index

Memperoleh jumlah teks penyelesaian otomatis dalam indeks yang ditentukan.

TFT.GETSUG

TFT.GETSUG index prefix [MAX_COUNT count] [FUZZY]

Memperoleh teks penyelesaian otomatis yang dapat dicocokkan berdasarkan awalan yang ditentukan. Teks dikembalikan dalam urutan menurun berdasarkan bobot.

TFT.GETALLSUGS

TFT.GETALLSUGS index

Memperoleh semua entri teks penyelesaian otomatis dalam indeks yang ditentukan.

Catatan

Daftar berikut menjelaskan konvensi untuk sintaks perintah yang digunakan dalam topik ini:

  • Kata kunci huruf kapital: menunjukkan kata kunci perintah.

  • Teks miring: menunjukkan variabel.

  • [opsi]: menunjukkan bahwa parameter yang diapit tanda kurung siku bersifat opsional. Parameter yang tidak diapit tanda kurung siku harus ditentukan.

  • A|B: menunjukkan bahwa parameter yang dipisahkan oleh tanda vertikal (|) saling eksklusif. Hanya satu parameter yang dapat ditentukan.

  • ...: menunjukkan bahwa parameter sebelum simbol ini dapat diulang.

TFT.CREATEINDEX

Item

Deskripsi

Sintaks

TFT.CREATEINDEX index mappings settings

Deskripsi perintah

Membuat indeks dan pemetaan untuk indeks tersebut. Sintaks yang digunakan untuk membuat pemetaan mirip dengan sintaks yang digunakan untuk membuat pemetaan eksplisit di Elasticsearch. Anda harus membuat indeks sebelum dapat menambahkan dokumen ke indeks tersebut.

Catatan

Untuk mencegah terbentuknya large key, Anda dapat membagi indeks besar menjadi indeks kecil dan merancang aturan distribusi beban untuk menulis data ke indeks yang berbeda. Saat membuat indeks, pastikan indeks tersebut memiliki parameter mappings dan settings diatur ke nilai yang sama. Setelah indeks tersebut dibuat, Anda dapat menanyakannya menggunakan TFT.MSEARCH.

Parameter

  • index: Nama indeks yang ingin Anda buat.

  • mappings: Konten pemetaan. Sintaks yang didukung adalah sebagai berikut:

    • dynamic: Mode pemetaan. Mode pemetaan strict didukung, di mana data hanya dapat ditulis ke bidang yang didefinisikan dalam properties. Upaya menulis data ke bidang yang tidak didefinisikan akan gagal. Jika parameter ini tidak ditentukan, mode pemetaan non-strict digunakan secara default, di mana sistem tidak memeriksa apakah bidang yang akan ditulis didefinisikan dalam properties.

    • enabled: Menentukan apakah akan memaksa memeriksa apakah tipe bidang dokumen yang akan ditulis sama dengan tipe yang ditentukan dalam properties. Jika tipe berbeda, operasi penulisan gagal. Nilai valid: true (default) dan false. Parameter ini hanya berlaku untuk bidang non-terindeks (index diatur ke false). Tipe bidang untuk bidang terindeks selalu diperiksa secara paksa.

    • _source: Menentukan apakah akan menyimpan dokumen asli. Parameter ini tidak memengaruhi pembuatan indeks bidang. Nilai valid:

      enabled: Menentukan apakah akan menyimpan dokumen asli. Nilai valid:

      • true (default): Menyimpan dokumen asli. Secara default, semua bidang disimpan.

        Anda dapat menentukan excludes untuk bidang yang tidak ingin disimpan dan includes untuk bidang yang ingin disimpan. Karakter wildcard diterima. Jika suatu bidang ditentukan baik dalam excludes maupun includes, excludes memiliki prioritas lebih tinggi daripada includes, yang berarti bidang tersebut tidak disimpan dalam dokumen asli. Berikut adalah contohnya.

        Contoh 1: "_source":{"enabled":true} (default) menentukan untuk menyimpan semua bidang dan bekerja seperti "_source":{"enabled":true,"excludes":[],"includes":[]}.

        Contoh 2: "_source":{"enabled":true,"excludes":[],"includes":["id","name"]} menentukan untuk hanya menyimpan bidang id dan name.

      • false: Tidak menyimpan dokumen asli.

    • properties: Kumpulan bidang yang dipetakan. Anda dapat mengatur atribut berikut untuk setiap bidang.

      • index: Menentukan apakah akan mengatur bidang sebagai bidang indeks. Nilai valid adalah sebagai berikut:

        • true (default): Bidang terindeks. Anda hanya dapat menanyakan dokumen dengan menggunakan bidang terindeks.

          Tair menyimpan dokumen asli semua bidang indeks dalam memori. Jika suatu bidang dikonfigurasi dalam _source untuk tidak disimpan, bidang tersebut tidak termasuk dalam dokumen asli yang dikembalikan oleh kueri.

        • false: Bidang tersebut adalah bidang non-terindeks.

      • boost: Bobot bidang. Nilai default: 1. Nilai parameter harus berupa bilangan titik mengambang positif. Tair secara otomatis menghitung skor relatif perkiraan untuk setiap bidang.

      • type: Tipe data bidang. Tipe data ARRAY didukung. Properti ini memiliki nilai valid berikut.

        Catatan

        Sebagai contoh, tipe array untuk keyword adalah keyword[], dan tipe data lainnya didefinisikan secara serupa. Contoh: TFT.CREATEINDEX idx:pro '{"mappings":{"properties":{"f0":{"type":"keyword[]"}}}}'.

        • keyword: String yang tidak dapat dibagi. Nilai valid:

          • ignore_above: Panjang string maksimum untuk keyword. Nilai default adalah 128. Contoh, "ignore_above":128.

          • similarity: Algoritma kemiripan. Nilai valid: classic (default, menunjukkan algoritma TF-IDF) dan BM25 (algoritma Okapi BM25). Contoh: TFT.CREATEINDEX idx:pro '{"mappings":{"properties":{"fs0":{"type":"keyword","similarity":"BM25"}}}}'. Anda juga dapat menyesuaikan parameter untuk algoritma BM25 dalam settings.

        • text: String yang dapat diurai oleh alat analisis dan kemudian disimpan dalam indeks. Nilai valid:

          • analyzer: Mengurai text dan menyimpan hasilnya dalam indeks.

            • Anda dapat memilih alat analisis bawaan TairSearch, termasuk standard (default), jieba (alat analisis Tiongkok yang direkomendasikan yang bekerja lebih baik daripada chinese), stop, IK, pattern, whitespace, simple, keyword, chinese, french, dutch, dan russian. Contoh, "analyzer":"jieba" menunjukkan bahwa alat analisis Tiongkok Jieba digunakan. Untuk informasi selengkapnya, lihat Alat analisis bawaan.

            • Anda juga dapat mendefinisikan alat analisis kustom, misalnya, "analyzer":"my_custom_analyzer", lalu mengonfigurasi alat analisis tersebut menggunakan parameter analysis dalam settings.

          • search_analyzer: Alat analisis yang digunakan untuk pencarian. Jenis alat analisis yang didukung sama dengan parameter analyzer. Nilai default adalah pengaturan parameter analyzer.

          • similarity: Algoritma kemiripan. Nilai valid: classic dan BM25. Nilai default: classic. classic menunjukkan algoritma TF-IDF. BM25 menunjukkan algoritma Okapi BM25. Anda juga dapat menentukan parameter kustom algoritma Okapi BM25 menggunakan parameter settings.

        • long: Tipe data LONG. Anda dapat mengonversi titik waktu menjadi timestamp Unix dan menyimpannya dalam tipe data ini.

        • integer: Tipe data INTEGER.

        • double: Tipe data DOUBLE. Tipe data khusus seperti NaN, Inf, dan -Inf tidak didukung.

  • settings (Opsional): Pengaturan untuk indeks. Opsi berikut didukung:

    • analysis: Alat analisis kustom. Untuk informasi selengkapnya, lihat Alat analisis kustom.

    • index: Algoritma kemiripan kustom. Anda dapat memodifikasi parameter algoritma Okapi BM25. Contoh: TFT.CREATEINDEX idx:pro15 '{"mappings":{"properties":{"fs0":{"type":"keyword","similarity":"my_similarity"}}},"settings":{"index":{"similarity":{"my_similarity":{"type":"BM25","k1": 1.0,"b": 1.0}}}}}'. Deskripsi parameter:

      • k1: Relevansi frekuensi suatu term tertentu dalam dokumen terhadap pembobotan term tersebut. Semakin besar nilainya, semakin relevan frekuensinya terhadap pembobotan. Nilai default: 1.2. Anda harus menentukan nilai yang lebih besar dari 0.

      • b: Relevansi ukuran dokumen terhadap pembobotan suatu term tertentu. Semakin besar nilainya, semakin relevan ukuran dokumen terhadap pembobotan. Nilai default: 0.75. Nilai valid: 0 hingga 1.

    • queries_cache: Saat Anda menanyakan dokumen, TairSearch mendukung penyimpanan hasil kueri dalam cache kueri. Secara default, cache menyimpan maksimal 10.000 hasil kueri tanpa batas memori. Ketika batas tercapai, hasil dikeluarkan berdasarkan algoritma Least Recently Used (LRU). Anda dapat menggunakan parameter queries_cache untuk mengonfigurasi memori maksimum dan Time to Live (TTL) untuk cache kueri. Setelah dikonfigurasi, memori maksimum cache kueri ditentukan oleh parameter size. Parameter ini memiliki bidang berikut:

      • size: Tipe data: STRING. Ukuran memori maksimum untuk semua cache kueri. Jika batas memori ini tercapai, hasil kueri juga dikeluarkan berdasarkan algoritma LRU.

        Unit default untuk parameter ini adalah byte. Contoh, "size": "1000" menentukan maksimum 1000 byte untuk cache kueri. Unit "kb" dan "mb" juga didukung, seperti "size": "10kb" dan "size": "1mb".

      • ttl: Periode validitas hasil kueri yang di-cache. Tipe data adalah INTEGER, dan nilai default adalah 10 detik.

      Contoh: "settings":{"queries_cache":{"size":"100mb","ttl":3}}.

      Parameter queries_cache adalah parameter tingkat node. Setelah Anda mengonfigurasi parameter ini untuk suatu indeks, indeks lain dalam proses yang sama juga terpengaruh. Oleh karena itu, kami menyarankan semua indeks menggunakan konfigurasi queries_cache yang sama.

    • compress_doc: Menentukan apakah akan mengaktifkan kompresi dokumen transparan. Jika Anda mengaktifkan fitur ini, konsumsi sumber daya CPU dan latensi baca/tulis akan meningkat. Oleh karena itu, kami menyarankan Anda hanya mengaktifkan kompresi dokumen jika indeksnya besar (misalnya dalam kilobyte) dan biaya penyimpanan adalah prioritas utama Anda. Nilai valid:

      • size: String yang menentukan ambang batas kompresi. Indeks hanya dikompresi ketika ukurannya mencapai ambang batas ini. Nilai default adalah "10kb".

        Unit default parameter ini adalah byte. Anda juga dapat menggunakan "kb" dan "mb" sebagai unit. Contoh, "size": "1000", "size": "10kb", dan "size": "1mb".

      • enable: Parameter Boolean yang menentukan apakah akan mengaktifkan fitur kompresi dokumen. Nilai valid adalah false (default) dan true.

      Contoh: "settings":{"compress_doc":{"size":"1kb","enable":true}}.

      Pengaturan kompresi dokumen hanya berlaku untuk dokumen yang ditulis atau diperbarui setelah Anda menggunakan perintah TFT.UPDATEINDEX untuk mengaktifkan atau menonaktifkan kompresi dokumen. Misalnya, jika Anda menjalankan perintah TFT.UPDATEINDEX untuk mengaktifkan kompresi dokumen, Tair hanya mengompresi dokumen yang ditulis atau diperbarui setelah kompresi dokumen diaktifkan. Tair tidak mengompresi dokumen yang ditulis sebelum kompresi dokumen diaktifkan.

Parameter respons.

  • Jika operasi berhasil, OK dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.CREATEINDEX idx:product '{"mappings":{"_source":{"enabled":true},"properties":{"product_id":{"type":"keyword","ignore_above":128},"product_name":{"type":"text"},"product_title":{"type":"text","analyzer":"jieba"},
"price":{"type":"double"}}}}'

# Tentukan ID produk (product_id) bertipe keyword dan atur batas panjang ID menjadi 128 karakter.
# Buat nama produk (product_name) bertipe text.
# Buat judul produk (product_title) bertipe text dan atur analyzer ke jieba.
# Tentukan harga (price) bertipe double.

Contoh keluaran:

OK

TFT.UPDATEINDEX

Kategori

Deskripsi

Sintaks

TFT.UPDATEINDEX index mappings settings

Deskripsi perintah

Menambahkan bidang properties ke indeks yang ditentukan atau memodifikasi pengaturan indeks.

Parameter

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • mappings: Konten pemetaan. Anda hanya perlu menentukan bidang properties yang baru ditambahkan (tidak perlu memasukkan informasi dynamic, _source, dan lainnya). Bidang properties yang baru ditambahkan tidak boleh bertentangan dengan bidang yang sudah ada. Jika bertentangan, penambahan akan gagal.

  • settings: Memodifikasi pengaturan indeks. Hanya parameter queries_cache, compress_doc, dan index yang dapat dimodifikasi. Untuk parameter index, hanya nilai k1 dan b dalam algoritma BM25 yang dapat dimodifikasi.

Catatan

Untuk sintaks mappings dan settings, lihat TFT.CREATEINDEX.

Parameter respons

  • Jika operasi berhasil, OK dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.UPDATEINDEX idx:product '{"mappings":{"properties":{"product_group":{"type":"text","analyzer":"chinese"}}}}'

Contoh keluaran:

OK

TFT.GETINDEX

Kategori

Deskripsi

Sintaks

TFT.GETINDEX index

Deskripsi perintah

Memperoleh konten pemetaan suatu indeks.

Parameter

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

Parameter respons.

  • Jika operasi berhasil, konten pemetaan indeks dalam format JSON dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.GETINDEX idx:product

Contoh keluaran:

{"idx:product0310":{"mappings":{"_source":{"enabled":true,"excludes":[],"includes":["product_id"]},"dynamic":"false","properties":{"price":{"boost":1.0,"enabled":true,"ignore_above":-1,"index":true,"similarity":"classic","type":"double"},"product_id":{"boost":1.0,"enabled":true,"ignore_above":128,"index":true,"similarity":"classic","type":"keyword"},"product_name":{"boost":1.0,"enabled":true,"ignore_above":-1,"index":true,"similarity":"classic","type":"text"},"product_title":{"analyzer":"chinese","boost":1.0,"enabled":true,"ignore_above":-1,"index":true,"similarity":"classic","type":"text"}}}}}

TFT.ADDDOC

Item

Deskripsi

Sintaks

TFT.ADDDOC index document [WITH_ID doc_id]

Deskripsi perintah

Menambahkan dokumen ke indeks. Anda dapat menentukan ID unik untuk dokumen dalam indeks menggunakan WITH_ID. Jika ID dokumen sudah ada, ID yang ada akan ditimpa. Jika Anda tidak menentukan WITH_ID (default), ID dokumen akan dibuat secara otomatis.

Parameter

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • document: Dokumen yang akan dimasukkan dalam format JSON. Nilai harus bertipe data yang didefinisikan untuk bidang ini.

    Catatan

    Jika Anda menentukan _source dengan parameter includes untuk hanya menyimpan bidang tertentu, hanya bidang yang ditentukan oleh includes yang disimpan saat Anda menambahkan dokumen ke indeks atau memperbarui dokumen yang telah ditambahkan ke indeks.

  • WITH_ID doc_id: Menentukan apakah akan mengonfigurasi ID dokumen. Jika ya, Anda juga harus memasukkan string sebagai nilai doc_id.

Parameter respons

  • Jika operasi berhasil, ID dokumen dalam format JSON dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.ADDDOC idx:product '{"product_id":"product test"}' WITH_ID 00001

Contoh keluaran:

{"id":"00001"}

Contoh array yang akan ditambahkan:

TFT.ADDDOC idx:product '{"product_id":["an","2","3df"]}' WITH_ID 00001

TFT.MADDDOC

Kategori

Deskripsi

Sintaks

TFT.MADDDOC index document doc_id [document1 doc_id1] ...

Deskripsi perintah

Menambahkan beberapa dokumen ke indeks. Setiap dokumen harus memiliki ID dokumen yang ditentukan oleh doc_id. Jika sebuah dokumen gagal ditambahkan karena format tidak valid, semua dokumen yang terlibat dalam perintah tersebut tidak akan ditambahkan ke indeks.

Parameter

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • document: Dokumen yang akan dimasukkan dalam format JSON. Nilai harus bertipe data yang didefinisikan untuk bidang ini.

    Catatan

    Jika Anda menentukan _source dengan parameter includes untuk hanya menyimpan bidang tertentu, hanya bidang yang ditentukan oleh includes yang disimpan saat Anda menambahkan dokumen ke indeks atau memperbarui dokumen yang telah ditambahkan ke indeks.

  • doc_id: ID dokumen. Nilai harus berupa string.

Parameter respons.

  • Jika operasi berhasil, OK dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.MADDDOC idx:product '{"product_id":"test1"}' 00011 '{"product_id":"test2"}' 00012

Contoh keluaran:

OK

TFT.UPDATEDOCFIELD

Kategori

Deskripsi

Sintaks

TFT.UPDATEDOCFIELD index doc_id document

Deskripsi perintah

Memperbarui dokumen yang ditentukan oleh doc_id dalam indeks. Jika bidang dokumen yang ingin Anda perbarui adalah bidang terpetakan dan terindeks, bidang tersebut harus memiliki tipe data yang sama dengan yang digunakan dalam pemetaan. Jika bidang tersebut bukan bidang terindeks, bidang yang diperbarui dapat memiliki tipe data apa pun.

Catatan

Jika bidang sudah ada, dokumen diperbarui. Jika bidang belum ada, bidang tersebut ditambahkan. Jika dokumen tidak ada, dokumen dibuat secara otomatis. Dalam kasus ini, perintah setara dengan TFT.ADDDOC.

Opsi

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • doc_id: ID dokumen.

  • document: Konten dokumen dalam format JSON yang ingin Anda perbarui.

    Catatan

    Jika Anda menentukan _source dalam parameter includes untuk hanya menyimpan bidang tertentu, hanya bidang yang ditentukan oleh includes yang disimpan saat Anda menambahkan dokumen ke indeks atau memperbarui dokumen yang telah ditambahkan ke indeks.

Parameter respons.

  • Jika operasi berhasil, OK dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.UPDATEDOCFIELD idx:product 00011 '{"product_id":"test8","product_group":"BOOK"}'

Contoh keluaran:

OK

TFT.DELDOCFIELD

Kategori

Deskripsi

Sintaks

TFT.DELDOCFIELD index doc_id field [field1 field2 ...]

Deskripsi perintah

Menghapus bidang yang ditentukan dari dokumen yang ditentukan oleh doc_id dalam indeks. Jika bidang tersebut merupakan bidang terindeks, informasi bidang tersebut juga dihapus dari indeks.

Catatan

Jika bidang yang ditentukan tidak ada (misalnya, bidang yang difilter oleh _source), operasi gagal.

Opsi

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • doc_id: ID dokumen.

  • field: Bidang yang ingin Anda hapus.

Parameter respons.

  • Jika operasi berhasil, jumlah bidang yang dihapus dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.DELDOCFIELD idx:product 00011 product_group

Contoh keluaran:

(integer) 1

TFT.INCRLONGDOCFIELD

Kategori

Deskripsi

Sintaks

TFT.INCRLONGDOCFIELD index doc_id field increment

Deskripsi perintah

Menambahkan increment ke bidang yang ditentukan dalam dokumen yang ditentukan oleh doc_id dalam indeks. Increment dapat berupa bilangan bulat positif atau negatif. Tipe data bidang hanya dapat berupa LONG atau INTEGER.

Catatan

Jika dokumen tidak ada, dokumen dibuat secara otomatis. Dalam kasus ini, nilai bidang yang ada adalah 0, dan nilai bidang yang diperbarui diperoleh dengan menambahkan nilai increment ke nilai bidang yang ada. Jika bidang tidak ada (misalnya, difilter oleh _source), operasi gagal.

Opsi

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • doc_id: ID dokumen.

  • field: Bidang tempat Anda ingin menambahkan increment. Tipe data bidang hanya dapat berupa LONG atau INTEGER. Tipe data ARRAY tidak didukung.

  • increment: Nilai increment yang ingin Anda tambahkan ke bidang. Nilai dapat berupa bilangan bulat positif atau negatif.

Parameter respons.

  • Jika operasi berhasil, nilai bidang yang diperbarui dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.INCRLONGDOCFIELD idx:product 00011 stock 100

Contoh keluaran:

(integer)100

TFT.INCRFLOATDOCFIELD

Kategori

Deskripsi

Sintaks

TFT.INCRFLOATDOCFIELD index doc_id field increment

Deskripsi perintah

Menambahkan increment ke bidang yang ditentukan dalam dokumen yang ditentukan oleh doc_id dalam indeks. Increment dapat berupa bilangan titik mengambang positif atau negatif. Tipe data bidang hanya dapat berupa DOUBLE.

Catatan

Jika dokumen tidak ada, dokumen dibuat secara otomatis. Dalam kasus ini, nilai bidang yang ada adalah 0, dan nilai bidang yang diperbarui diperoleh dengan menambahkan nilai increment ke nilai bidang yang ada. Jika bidang tidak ada (misalnya, difilter oleh _source), operasi gagal.

Opsi

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • doc_id: ID dokumen.

  • field: Bidang tempat Anda ingin menambahkan increment. Tipe data bidang hanya dapat berupa DOUBLE. Tipe data ARRAY tidak didukung.

  • increment: Nilai increment yang ingin Anda tambahkan ke bidang. Nilai dapat berupa bilangan titik mengambang positif atau negatif.

Parameter respons.

  • Jika operasi berhasil, nilai bidang yang diperbarui dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.INCRFLOATDOCFIELD idx:product 00011 stock 299.6

Contoh keluaran:

"299.6"

TFT.GETDOC

Kategori

Deskripsi

Sintaks

TFT.GETDOC index doc_id

Deskripsi perintah

Memperoleh konten dokumen yang ditentukan oleh doc_id dalam indeks.

Opsi

  • index: Nama indeks yang ingin Anda tanyakan.

  • doc_id: ID dokumen.

Parameter respons.

  • Jika operasi berhasil, ID dan konten dokumen dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.GETDOC idx:product 00011

Contoh keluaran:

{"_id":"00011","_source":{"product_id":"test8"}}

TFT.EXISTS

Kategori

Deskripsi

Sintaks

TFT.EXISTS index doc_id

Deskripsi perintah

Memeriksa apakah dokumen yang ditentukan oleh doc_id ada dalam indeks.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

  • doc_id: ID dokumen.

Parameter respons.

  • Jika operasi berhasil:

    • Jika dokumen ada, nilai 1 dikembalikan.

    • Jika indeks atau dokumen tidak ada, nilai 0 dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.EXISTS idx:product 00011

Contoh keluaran:

(integer) 1

TFT.DOCNUM

Kategori

Deskripsi

Sintaks

TFT.DOCNUM index

Deskripsi perintah

Memperoleh jumlah dokumen dalam indeks.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

Nilai kembali

  • Jika operasi berhasil, jumlah dokumen dalam indeks dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.DOCNUM idx:product

Contoh keluaran:

(integer) 3

TFT.SCANDOCID

Kategori

Deskripsi

Sintaks

TFT.SCANDOCID index cursor [MATCH *value*] [COUNT count]

Deskripsi perintah

Memperoleh ID semua dokumen dalam indeks.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

  • cursor: Kursor yang digunakan untuk pemindaian ini.

  • MATCH *value*: Pencocokan pola, di mana value adalah nilai yang akan dicocokkan, misalnya MATCH *redis*.

  • COUNT count: Jumlah maksimum item yang dipindai dalam operasi ini, default adalah 100.

Parameter respons.

  • Jika operasi berhasil, array dikembalikan.

    • Elemen pertama: cursor untuk kueri berikutnya. Jika kunci telah sepenuhnya dipindai, 0 dikembalikan.

    • Elemen kedua: doc_id dari kueri ini.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.SCANDOCID idx:product 0 COUNT 3

Contoh keluaran:

1) "0"
2) 1) "00001"
   2) "00011"
   3) "00012"

TFT.DELDOC

Item

Deskripsi

Sintaks

TFT.DELDOC index doc_id [doc_id] ...

Deskripsi perintah

Menghapus dokumen yang ditentukan oleh doc_id dari indeks. Beberapa ID dokumen dapat ditentukan.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

  • doc_id: ID dokumen.

Parameter respons.

  • Jika operasi berhasil, jumlah dokumen yang dihapus dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.DELDOC idx:product 00011 00014

Contoh keluaran:

"1"    # Dalam contoh ini, dokumen dengan ID "00014" tidak ada, sehingga hanya dokumen dengan ID "00011" yang dihapus, mengembalikan 1.

TFT.DELALL

Kategori

Deskripsi

Sintaks

TFT.DELALL index

Deskripsi perintah

Menghapus semua dokumen dari indeks tetapi mempertahankan indeks tersebut.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

  • doc_id: ID dokumen.

Parameter respons.

  • Jika operasi berhasil, OK dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.DELALL idx:product

Contoh keluaran:

OK

TFT.ANALYZER

Kategori

Deskripsi

Sintaks

TFT.ANALYZER analyzer_name text [INDEX index_name] [SHOW_TIME]

Deskripsi perintah

Menanyakan efek tokenisasi dari alat analisis yang ditentukan.

Opsi

  • analyzer_name: Nama alat analisis. Anda dapat menentukan alat analisis bawaan atau kustom.

    Jika Anda menentukan alat analisis kustom atau alat analisis bawaan yang kamus atau kata berhentinya telah dimodifikasi, Anda juga harus menentukan nama indeks tempat alat analisis tersebut dibuat (INDEX).

  • text: Dokumen yang ingin Anda bagi menggunakan alat analisis. Dokumen harus dikodekan dalam format UTF-8.

  • INDEX (opsional): Nama indeks tempat alat analisis tersebut dibuat. Jika Anda menentukan alat analisis kustom atau alat analisis bawaan yang kamus atau kata berhentinya telah dimodifikasi, parameter ini wajib diisi.

  • SHOW_TIME (opsional): Menentukan apakah akan mengembalikan jumlah waktu yang dibutuhkan untuk membagi dokumen menjadi token. Satuan: mikrodetik (us).

    Jumlah waktu mencakup waktu yang dibutuhkan untuk memuat kamus. Pertama kali kamus yang relatif besar dimuat, seperti JiebaAnalyzer atau IKAnalyzer, jumlah waktu dapat meningkat hingga beberapa detik.

Parameter respons.

  • Jika operasi berhasil, informasi token dikembalikan dalam format JSON.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.ANALYZER standard "Tair is a nosql database"

Contoh keluaran:

'{
    "tokens":[
        {
            "token":"Tair",
            "start_offset":0,
            "end_offset":4,
            "position":0
        },
        {
            "token":"nosql",
            "start_offset":10,
            "end_offset":15,
            "position":3
        },
        {
            "token":"database",
            "start_offset":16,
            "end_offset":24,
            "position":4
        }
    ]
}'

TFT.SEARCH

Kategori

Deskripsi

Sintaks

TFT.SEARCH index query

Deskripsi perintah

Mencari dokumen dalam indeks berdasarkan pernyataan kueri. Sintaks kueri mirip dengan sintaks Elasticsearch.

Opsi

index adalah nama indeks yang ingin Anda kelola dengan menjalankan perintah ini; query adalah pernyataan Query DSL yang mirip dengan sintaks yang digunakan di Elasticsearch. Bidang berikut didukung:

  • query: Klausa kueri. Sintaks berikut didukung:

    • match: Kueri pencocokan dasar. Parameter berikut didukung.

      Dalam skenario yang tidak memerlukan pemecahan karakter dokumen menjadi token individual atau tidak memerlukan pencocokan fuzzy, kami menyarankan Anda menggunakan perintah seperti term dan prefix untuk meningkatkan efisiensi kueri.

      • query: Dokumen dalam indeks yang diperoleh menggunakan kueri.

        Catatan
        • Jika pencocokan fuzzy dinonaktifkan menggunakan fuzziness, dokumen yang diperoleh oleh kueri dipecah menjadi token individual oleh pemisah kata yang ditentukan oleh analyzer. Anda juga dapat menentukan hubungan antar token menggunakan operator dan jumlah minimum token yang perlu dicocokkan menggunakan minimum_should_match.

        • Jika pencocokan fuzzy diaktifkan menggunakan fuzziness, parameter di atas tidak berlaku. Dalam kasus ini, Anda dapat menentukan prefix_length.

      • analyzer: Pemisah kata yang digunakan oleh pernyataan match. Nilai valid: standard (default, pemisah kata Inggris), chinese, arabic, cjk, czech, brazilian, german, greek, persian, french, dutch, russian, dan jieba (pemisah kata Tiongkok). Untuk informasi selengkapnya, lihat Alat analisis pencarian.

      • minimum_should_match: Jumlah minimum token yang perlu dicocokkan. Pemisah kata memecah pernyataan kueri menjadi token. Parameter ini berlaku ketika pencocokan fuzzy dinonaktifkan dan operator diatur ke OR.

      • operator: Hubungan antar token. Nilai valid: AND dan OR. Nilai default: OR. Contoh, '{"query":{"match":{"f0":{"query":"redis cluster","operator":"OR"}}}}' menentukan bahwa kondisi pencarian terpenuhi ketika "redis" atau "cluster" terdapat dalam dokumen yang ingin Anda kueri.

      • fuzziness: Menentukan apakah akan mengaktifkan pencocokan fuzzy untuk kueri. Secara default, pencocokan fuzzy dinonaktifkan. "fuzziness":1 menentukan bahwa pencocokan fuzzy diaktifkan. Contoh: '{"query":{"match":{"f0":{"query":"excelentl","fuzziness":1}}}}'.

      • prefix_length: Jumlah karakter awal yang harus dipertahankan untuk pencocokan fuzzy. Nilai default: 0. Parameter ini hanya berlaku ketika pencocokan fuzzy diaktifkan.

    • term: Kueri token. Jika parameter ini ditentukan, pernyataan kueri tidak dibagi. Jenis kueri ini lebih efisien daripada kueri match. Parameter ini mendukung semua tipe bidang. Saat melakukan kueri token, Anda dapat mengatur parameter lowercase untuk mengonversi token yang ingin Anda kueri menjadi huruf kecil. Nilai valid parameter lowercase adalah true dan false. Nilai default adalah true. Contoh: '{"query":{"term":{"f0":{"value":"redis","boost": 2.0}}}}' atau '{"query":{"term":{"f0":{"value":"redis","lowercase": false}}}}'.

      Jika alat analisis yang digunakan saat Anda menambahkan dokumen tidak mengonversi dokumen menjadi huruf kecil, kami menyarankan Anda mengatur parameter lowercase ke false. Jika tidak, dokumen mungkin tidak ditemukan.

    • terms: Kueri multi-token. Maksimal 1024 token diperbolehkan dalam setiap kueri multi-token. Saat melakukan kueri token, Anda dapat mengatur parameter lowercase untuk mengonversi token yang ingin Anda kueri menjadi huruf kecil. Nilai valid parameter lowercase adalah true dan false. Nilai default adalah true. Contoh: '{"query":{"terms":{"f0":["redis","excellent"]}}}'.

      Jika alat analisis yang digunakan saat Anda menambahkan dokumen tidak mengonversi dokumen menjadi huruf kecil, kami menyarankan Anda mengatur parameter lowercase ke false. Jika tidak, dokumen mungkin tidak ditemukan.

    • range: Kueri rentang. Parameter ini mendukung semua tipe bidang. Nilai valid: lt (kurang dari), gt (lebih dari), lte (kurang dari atau sama dengan), dan gte (lebih dari atau sama dengan). Contoh: '{"query":{"range":{"f0":{"lt":"abcd","gt":"ab"}}}}'.

    • wildcard: Kueri wildcard. Format nilai parameter: "wildcard":{"field to query":{"value":"query content"}}. Karakter wildcard yang didukung: * dan ?. Contoh: '{"query":{"wildcard":{"f0":{"value":"*b?Se"}}}}'.

    • prefix: Kueri awalan. Contoh, '{"query":{"prefix":{"f0":"abcd"}}' menentukan untuk menanyakan dokumen yang bidang f0-nya diawali dengan abcd.

    • bool: Kueri majemuk. Maksimal 1.024 token diperbolehkan dalam setiap kueri majemuk. Nilai valid:

      • must: Hasil kueri harus mencocokkan semua klausa kueri dalam daftar must. Contoh, '{"query":{"bool":{"must":[{"match":{"DB":"redis"}},{"match":{"Architectures":"cluster"}}]}}}' menentukan bahwa jenis basis data yang ingin Anda kueri adalah Redis dan arsitektur instans yang berisi basis data tersebut adalah kluster.

      • must_not: Hasil kueri tidak mencocokkan klausa kueri apa pun dalam daftar must_not.

      • should: Daftar should. Jika bool diatur ke should, hasil kueri harus mencocokkan satu klausa kueri dalam daftar ini. Anda dapat mengatur parameter minimum_should_match.

      • minimum_should_match: Menentukan jumlah minimum klausa kueri yang harus dicocokkan. Parameter ini harus digunakan bersama dengan should. Jika pernyataan bool hanya berisi should, minimum_should_match diatur ke 1 secara default. Jika pernyataan bool juga berisi must atau must_not, minimum_should_match diatur ke 0 secara default. Contoh, '{"query":{"bool":{"minimum_should_match":1,"should":[{"match":{"DB":"redis"}},{"match":{"Architectures":"cluster"}}]}}}' menentukan bahwa jenis basis data yang ingin Anda kueri adalah Redis atau arsitektur instans yang berisi basis data tersebut adalah kluster.

      Catatan

      Pernyataan bool dapat memiliki semua jenis klausa kueri bersarang di dalamnya, seperti klausa bool. Contoh: TFT.SEARCH idx:product '{"query":{"bool":{"must":[{"term":{"product_name":"apple"}},{"bool":{"minimum_should_match":1,"should":[{"term":{"price":19.5}},{"term":{"product_id":"fruits_2"}}]}}]}}}'.

    • dis_max: Kueri majemuk untuk pencocokan terbaik. Secara default, parameter ini mengembalikan dokumen yang mencocokkan satu atau beberapa klausa kueri. Jika dokumen yang dikembalikan mencocokkan beberapa klausa kueri, kueri dis_max memberikan dokumen tersebut skor tertinggi dari klausa yang cocok dan penambahan skor pemecah seri ke skor dokumen jika tie_breaker ditentukan.

      Jika Anda menentukan parameter tie_breaker, skor dokumen yang mencocokkan beberapa klausa kueri meningkat. Nilai tie_breaker dapat berkisar dari 0 hingga 1, dan nilai default adalah 0. Setelah Anda menentukan tie_breaker, skor akhir dokumen dihitung menggunakan rumus berikut: skor dari klausa pencocokan terbaik + (jumlah skor dari semua klausa pencocokan lainnya × nilai tie_breaker). Misalnya, jika kueri berisi tiga klausa, nilai tie_breaker adalah 0.5, dan skor dokumen bernama doc1 untuk setiap klausa adalah 5, 1, dan 3, skor akhir untuk doc1 adalah 5 + ((1 + 3) × 0.5).

      Contoh: '{"query":{"dis_max":{"queries":[{"term":{"f0":"redis"}},{"term":{"f1":"database"}},{"match":{"title":"redis memory database"}}],"tie_breaker": 0.5}}}'.

    • constant_score: Kueri majemuk yang mengembalikan skor konstan. Kueri ini membungkus kueri lain dan mengembalikan skor konstan yang sama dengan boost kueri untuk setiap dokumen dalam filter. Nilai boost bertipe DOUBLE, dan nilai boost default adalah 1.0. Contoh: '{"query":{"constant_score":{"filter":{"term":{"f0":"abc"}},"boost":1.2}}}'.

    • match_all: Kueri pencocokan semua. Kueri ini mencocokkan semua dokumen dan memberikan semua dokumen nilai boost. Nilai boost bertipe DOUBLE, dan nilai boost default adalah 1.0. Contoh: '{"query":{"match_all":{"boost":2.3}}}'.

    Catatan

    Jika Anda melakukan kueri majemuk menggunakan bool, dis_max, dan constant_score, Anda dapat mengatur nilai boost untuk term, terms, range, dan wildcard. Nilai boost default adalah 1. Anda harus menentukan parameter tempat nilai boost diterapkan dalam sintaks kueri. Contoh: '{"query":{"bool":{"must":[{"match":{"f0":"v0"}},"term":{"f0":{"value":"redis","boost":2}}]}}}'.

  • sort: Mengurutkan hasil kueri berdasarkan faktor. Tipe data ARRAY tidak didukung. Nilai default: _score. Nilai valid:

    • _score: Mengurutkan hasil kueri berdasarkan bobot dalam urutan menurun. Contoh: "sort":"_score".

    • _doc: Mengurutkan hasil kueri berdasarkan ID dokumen dalam urutan menaik. Contoh: "sort":"_doc".

    • Bidang yang ditentukan: Mengurutkan hasil kueri berdasarkan bidang yang ditentukan dalam urutan menaik. Bidang tersebut harus merupakan bidang terindeks (index diatur ke true) atau bidang yang diperiksa secara paksa (enabled diatur ke true). Bidang tersebut harus bertipe keyword, long, integer, atau double. Misalnya, "sort":"price" menentukan untuk mengurutkan hasil kueri berdasarkan harga dalam urutan menaik.

    Anda juga dapat menggunakan array untuk mengurutkan hasil kueri. Dalam kasus ini, hasil kueri diurutkan berdasarkan urutan array. Anda dapat menggunakan order untuk memodifikasi urutan array default. Nilai valid order: desc dan acs. Misalnya, '{"sort":[{"price":{"order":"desc"}},{"_doc":{"order":"desc"}}]}' menentukan untuk mengurutkan hasil kueri berdasarkan harga atau berdasarkan ID dokumen jika harganya sama.

  • _source: Bidang yang ditampilkan dalam hasil kueri. Anda dapat menggunakan includes untuk menentukan bidang yang ingin Anda simpan dan menggunakan excludes untuk menentukan bidang yang tidak ingin Anda simpan. Karakter wildcard diterima. Misalnya, "_source":{"includes":["f0"] menentukan untuk hanya mengembalikan bidang f0 dalam hasil kueri.

  • aggs: Mengagregasi hasil klausa query. Jika bidang bertipe data ARRAY, hanya agregasi terms yang didukung. Untuk informasi selengkapnya, lihat Agregasi.

  • track_total_hits: Menentukan apakah akan menanyakan semua dokumen saat Anda menggunakan kueri term, terms, atau match. Dalam kasus ini, kueri majemuk didukung. Jika Anda menggunakan kueri match, pencocokan fuzzy dinonaktifkan. Nilai valid:

    • false: Hanya 100 dokumen teratas yang ditanyakan. Dokumen diurutkan berdasarkan skor.

    • true: Semua dokumen ditanyakan.

      Peringatan

      Jika track_total_hits diatur ke true dan jumlah dokumen yang ditanyakan besar, kueri lambat terjadi. Harap berhati-hati.

  • from: Dokumen awal yang dikembalikan. Nilai default adalah 0, yang menentukan untuk mengembalikan dokumen pertama dan semua dokumen berikutnya yang ditanyakan.

  • size: Jumlah dokumen yang dapat dikembalikan. Nilai default: 10. Nilai valid: 0 hingga 10000. Nilai 0 menentukan untuk hanya mengembalikan jumlah total dokumen yang diperoleh, bukan dokumen spesifik.

    Catatan

    Kombinasi from dan size bekerja seperti paging. Namun, performa kueri menurun seiring bertambahnya jumlah halaman diskrit.

Keluaran

  • Jika operasi berhasil, dokumen dalam indeks dikembalikan.

    Catatan

    Dalam contoh keluaran berikut, relation menunjukkan jumlah dokumen yang dikembalikan. Nilai valid relation: eq (sama dengan nilai yang ditentukan oleh value) dan gte (lebih besar dari atau sama dengan nilai yang ditentukan oleh value).

    {
        "hits": {
            "hits": [],
            "max_score": null,
            "total": {
                "relation": "gte",
                "value": 100
            }
        }
    }
  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.SEARCH idx:product '{"sort":[{"price":{"order":"desc"}}]}'

Contoh keluaran:

{"hits":{"hits":[{"_id":"fruits_3","_index":"idx:product","_score":1.0,"_source":{"product_id":"fruits_3","product_name":"orange","price":30.2,"stock":3000}},{"_id":"fruits_2","_index":"idx:product","_score":1.0,"_source":{"product_id":"fruits_2","product_name":"banana","price":24.0,"stock":2000}},{"_id":"fruits_1","_index":"idx:product","_score":1.0,"_source":{"product_id":"fruits_1","product_name":"apple","price":19.5,"stock":1000}}],"max_score":1.0,"total":{"relation":"eq","value":3}}}

TFT.MSEARCH

Item

Deskripsi

Sintaks

TFT.MSEARCH index_count index [index1] ... query

Deskripsi perintah

Menanyakan dokumen dalam beberapa indeks yang memiliki mappings dan settings diatur ke nilai yang sama menggunakan klausa kueri dan mengumpulkan hasil dari indeks-indeks tersebut. Kemudian, hasilnya dinilai, diurutkan, diagregasi, dan dikembalikan.

Catatan

Keluaran perintah TFT.MSEARCH adalah hasil penilaian, pengurutan, dan agregasi hasil kueri dari indeks-indeks tersebut. Keluaran ini berbeda dari hasil yang dihasilkan dengan langsung menilai, mengurutkan, dan mengagregasi set data dalam beberapa indeks. Kebijakan TFT.MSEARCH:

  • Penilaian dan pengurutan: menilai dan mengurutkan set hasil anak.

  • Agregasi:

    • Sum, max, min, avg, value_count: melakukan operasi agregasi pada set hasil anak menggunakan fungsi agregasi.

    • Sum_of_squares, variance, std_deviation: melakukan operasi rata-rata pada set hasil anak.

    • Agregasi Terms dan Agregasi Filter: melakukan operasi agregasi lain pada set hasil anak.

Parameter

  • index_cout: Jumlah indeks yang ingin Anda tanyakan. Nilai valid: 1 hingga 100.

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini. Indeks-indeks ini harus memiliki mappings dan settings diatur ke nilai yang sama. Jika konfigurasi mappings berbeda untuk indeks yang berbeda atau jika suatu indeks tidak ada, kesalahan dilaporkan.

  • query: Pernyataan agregasi. Parameter berikut didukung:

    • query: Klausa kueri.

    • sort: Mengurutkan hasil kueri berdasarkan faktor. Tipe data ARRAY tidak didukung.

    • _source: Bidang yang dikembalikan dalam hasil.

    • aggs: Mengagregasi hasil klausa kueri. Jika bidang bertipe data ARRAY, hanya agregasi terms yang didukung.

    • track_total_hits: Menentukan apakah akan menanyakan semua dokumen saat Anda menggunakan kueri term, terms, atau match. Dalam kasus ini, kueri majemuk didukung. Jika Anda menggunakan kueri match, pencocokan fuzzy dinonaktifkan.

    • size: Jumlah dokumen yang dikembalikan.

      Kueri berhalaman dapat diimplementasikan menggunakan size, reply_with_keys_cursor, dan keys_cursor. Jika keys_cursor diatur ke nilai default 0, Tair mengambil jumlah dokumen yang ditentukan mulai dari dokumen pertama dari hasil yang diperoleh dari indeks. Jika keys_cursor tidak diatur ke 0, jumlah dokumen tertentu diambil mulai dari posisi tertentu. Kemudian, hasil dari indeks-indeks ini dikumpulkan untuk dinilai, diurutkan, diagregasi, dan dikembalikan sebagai keluaran.

      Sebagai contoh, asumsikan Anda ingin menanyakan tiga indeks key0, key1, dan key2 sekaligus dan Anda mengatur parameter size ke 10:

      • Untuk kueri pertama, atur keys_cursor ke 0. Tair mengambil 10 dokumen pertama dari ketiga indeks tersebut masing-masing. Kemudian, Tair mengumpulkan, menilai, mengurutkan, dan mengagregasi 30 dokumen ini dan mengembalikan 10 dokumen teratas. Contoh nilai kembalian keys_cursor: {"keys_cursor":{"key0":2,"key1":5,"key2":3}}.

      • Untuk kueri kedua, gunakan pernyataan kueri yang sama dan tambahkan {"keys_cursor":{"key0":2,"key1":5,"key2":3}}. Tair mengambil 10 dokumen pertama dari posisi yang ditentukan dalam indeks-indeks tersebut. Misalnya, Tair mengambil 10 dokumen mulai dari yang ketiga dalam indeks key0. Kemudian, Tair mengumpulkan, menilai, mengurutkan, dan mengagregasi dokumen yang diambil, lalu mengembalikan keluaran.

    • reply_with_keys_cursor: Menentukan apakah akan mengembalikan posisi awal kueri berikutnya untuk setiap indeks. Nilai valid: true dan false. Nilai default: false.

    • keys_cursor: Menentukan posisi kursor dalam setiap indeks untuk kueri. Untuk mengimplementasikan kueri berhalaman, atur keys_cursor ke nilai kembalian kueri sebelumnya. Nilai default adalah 0, yang menunjukkan bahwa kueri dimulai dari dokumen pertama.

Catatan

Berbeda dengan pernyataan query perintah TFT.SEARCH, pernyataan query perintah TFT.MSEARCH tidak mendukung parameter from, tetapi mendukung kueri berhalaman menggunakan parameter size, reply_with_keys_cursor, dan keys_cursor. Untuk informasi selengkapnya tentang sintaks parameter lainnya, lihat TFT.SEARCH.

Parameter respons.

  • Jika operasi berhasil, dokumen yang diperoleh dan aux_info dikembalikan, yang mirip dengan keluaran perintah TFT.SEARCH.

    Bidang aux_info mencakup nilai CRC-64 dari mappings dan settings (yang dapat diabaikan untuk permintaan bisnis), nilai keys_cursor (opsional, menunjukkan posisi kursor untuk kueri berikutnya dalam setiap indeks), dan nilai field_type (tipe data bidang, hanya dikembalikan saat pengurutan berdasarkan bidang indeks). Contoh aux_info:

    {
        "aux_info":{
            "index_crc64":15096806844241479487,
            "keys_cursor":{
                "key0":2,
                "key1":5,
                "key2":3
            },
            "field_type":{
                "f0":"long"
            }
        }
    }
  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Jalankan perintah berikut terlebih dahulu:

TFT.CREATEINDEX key0 '{"mappings":{"properties":{"f0":{"type":"long"}}}}'
TFT.CREATEINDEX key1 '{"mappings":{"properties":{"f0":{"type":"long"}}}}'
TFT.CREATEINDEX key2 '{"mappings":{"properties":{"f0":{"type":"long"}}}}'
TFT.ADDDOC key0 '{"f0":120}'
TFT.ADDDOC key0 '{"f0":130}'
TFT.ADDDOC key1 '{"f0":140}'
TFT.ADDDOC key1 '{"f0":150}'
TFT.ADDDOC key2 '{"f0":160}'
TFT.ADDDOC key2 '{"f0":170}'

Contoh perintah:

TFT.MSEARCH 3 key0 key1 key2 '{"size":2,"query":{"range":{"f0":{"gt":120,"lte":170}}},"sort":[{"f0":{"order":"desc"}}],"reply_with_keys_cursor":true}'

Contoh respons:

{"hits":{"hits":[{"_id":"16625439765504840","_index":"key2","_score":1.0,"_source":{"f0":170}},{"_id":"16625439741096630","_index":"key2","_score":1.0,"_source":{"f0":160}}],"max_score":1.0,"total":{"relation":"eq","value":5}},"aux_info":{"index_crc64":10084399559244916810,"keys_cursor":{"key0":0,"key1":0,"key2":2}}}

Contoh perintah untuk menanyakan halaman kedua:

TFT.MSEARCH 3 key0 key1 key2 '{"size":2,"query":{"range":{"f0":{"gt":120,"lte":170}}},"sort":[{"f0":{"order":"desc"}}],"reply_with_keys_cursor":true,"keys_cursor":{"key0":0,"key1":0,"key2":2}}'
# Pernyataan kueri sama dengan kueri pertama, tetapi Anda perlu menambahkan informasi keys_cursor yang dikembalikan dari kueri sebelumnya.

Contoh respons:

{"hits":{"hits":[{"_id":"16625439652681160","_index":"key1","_score":1.0,"_source":{"f0":150}},{"_id":"16625439624704580","_index":"key1","_score":1.0,"_source":{"f0":140}}],"max_score":1.0,"total":{"relation":"eq","value":5}},"aux_info":{"index_crc64":10084399559244916810,"keys_cursor":{"key0":0,"key1":2,"key2":2}}}

TFT.EXPLAINCOST

Item

Deskripsi

Sintaks

TFT.EXPLAINCOST index query

Deskripsi perintah

Menanyakan durasi eksekusi pernyataan kueri. Keluaran mencakup jumlah dokumen yang terlibat dalam kueri dan jumlah waktu yang dikonsumsi oleh setiap operasi dalam kueri.

Opsi

  • index: Nama indeks yang ingin Anda tanyakan.

  • query: Pernyataan kueri yang memiliki sintaks yang sama dengan perintah TFT.SEARCH.

Parameter respons.

  • Jika operasi berhasil, keluaran dikembalikan dalam format JSON. Keluaran dapat berisi item berikut:

    • QUERY_COST: Durasi eksekusi kueri dalam mikrodetik (time_cost_us). Juga mencakup informasi tampilan kueri (query) dan jumlah dokumen yang terlibat dalam kueri (doc_num). Jika metode kueri bool digunakan, waktu eksekusi setiap langkah dalam proses kueri bool (steps) akan ditampilkan.

    • AGGS_COST: Waktu yang dihabiskan untuk agregasi selama proses kueri, dalam mikrodetik (time_cost_us). Jika tidak ada kueri agregasi yang ditentukan dalam pernyataan kueri, biaya ini tidak akan disertakan.

    • COLLECTOR_COST: Waktu yang dihabiskan untuk mengumpulkan dan mengurutkan hasil kueri, dalam mikrodetik (time_cost_us). Juga mencakup jenis pengurutan (collector_type), dengan nilai kembalian berupa pengurutan skor (ScoreCollector) dan pengurutan kustom (CustomSortCollector).

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.EXPLAINCOST idx:product '{"sort":[{"price":{"order":"desc"}}]}'

Contoh keluaran:

{
    "QUERY_COST": {
        "query": "MATCHALL_QUERY",
        "doc_num": 1,
        "time_cost_us": 2
    },
    "COLLECTOR_COST": {
        "collector_type": "CustomSortCollector",
        "time_cost_us": 20
    }
}

TFT.EXPLAINSCORE

Kategori

Deskripsi

Sintaks

TFT.EXPLAINSCORE index query [doc_id] ...

Deskripsi perintah

Menanyakan informasi skor terperinci dari dokumen yang dihasilkan dari eksekusi pernyataan kueri. Anda dapat menggunakan perintah ini untuk memahami proses perhitungan skor dokumen. Kemudian, Anda dapat mengoptimalkan kueri pencarian untuk meningkatkan efektivitas pengambilan dokumen.

Perintah ini hanya tersedia untuk instans berbasis DRAM yang kompatibel dengan Redis 6.0.

Parameter

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • query: Pernyataan kueri yang memiliki sintaks yang sama dengan perintah TFT.SEARCH.

  • doc_id: ID dokumen. Jika parameter ini ditentukan, hanya dokumen yang ditentukan oleh doc_id yang dikembalikan.

Parameter respons.

  • Jika operasi berhasil, informasi dokumen yang ditanyakan dikembalikan. Informasi skor terperinci untuk setiap dokumen (_explanation) merupakan tambahan pada set hasil dasar yang dikembalikan oleh perintah TFT.SEARCH. Objek _explanation berisi bidang-bidang berikut:

    • score: Skor dokumen.

    • description: Rumus yang digunakan untuk perhitungan skor.

    • field: Bidang dokumen yang cocok dengan term yang ditentukan dalam kueri.

    • term: Term dari kueri yang ditemukan dalam dokumen.

    • query_boost: Bobot penilaian yang diterapkan pada dokumen dalam kueri.

    • details: Metadata dan proses penilaian untuk dokumen.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.EXPLAINSCORE today_shares '{"query":{"wildcard":{"shares_name":{"value":"*BY"}}}}'

Contoh keluaran:

{
    "hits": {
        "hits": [
            {
                "_id": "17036492095306830",
                "_index": "today_shares",
                "_score": 1.0,
                "_source": {
                    "shares_name": "YBY",
                    "logictime": 14300410,
                    "purchase_type": 1,
                    "purchase_price": 11.1,
                    "purchase_count": 100,
                    "investor": "Mila"
                },
                "_explanation": {
                    "score": 1.0,
                    "description": "score, computed as query_boost",
                    "field": "shares_name",
                    "term": "*BY",
                    "query_boost": 1.0
                }
            }
        ],
        "max_score": 1.0,
        "total": {
            "relation": "eq",
            "value": 1
        }
    }
}

TFT.ADDSUG

Kategori

Deskripsi

Sintaks

TFT.ADDSUG index text weight [text weight] ...

Deskripsi perintah

Menambahkan satu atau beberapa teks penyelesaian otomatis dan bobotnya ke indeks yang ditentukan.

Parameter

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • text: Entri teks penyelesaian otomatis.

  • weight: Bobot penilaian teks yang sesuai, yang harus berupa bilangan bulat positif.

Parameter respons

  • Jika operasi berhasil, jumlah entri teks yang ditambahkan dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.ADDSUG idx:redis 'redis is a memory database' 3 'redis cluster' 10

Contoh keluaran:

(integer) 2

TFT.DELSUG

Kategori

Deskripsi

Sintaks

TFT.DELSUG index text [text] ...

Deskripsi perintah

Menghapus satu atau beberapa entri teks penyelesaian otomatis dari indeks yang ditentukan.

Parameter

  • index: Nama indeks yang ingin Anda kelola dengan menjalankan perintah ini.

  • text: Entri teks yang ingin Anda hapus dari indeks. Entri teks harus lengkap dan akurat.

Keluaran

  • Jika operasi berhasil, jumlah entri teks yang dihapus dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.DELSUG idx:redis 'redis is a memory database' 'redis cluster' 

Contoh keluaran:

(integer) 2

TFT.SUGNUM

Kategori

Deskripsi

Sintaks

TFT.SUGNUM index

Deskripsi perintah

Memperoleh jumlah teks penyelesaian otomatis dalam indeks yang ditentukan.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

Parameter respons.

  • Jika operasi berhasil, jumlah teks dalam indeks dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.SUGNUM idx:redis

Contoh keluaran:

(integer) 3

TFT.GETSUG

Kategori

Deskripsi

Sintaks

TFT.GETSUG index prefix [MAX_COUNT count] [FUZZY]

Deskripsi perintah

Memperoleh teks penyelesaian otomatis yang dapat dicocokkan berdasarkan awalan yang ditentukan. Teks dikembalikan dalam urutan menurun berdasarkan bobot.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

  • prefix: Awalan kueri yang ditentukan.

  • MAX_COUNT count: Mengonfigurasi jumlah maksimum entri teks yang dikembalikan, dengan nilai count berkisar dari [0,255].

  • FUZZY: Apakah akan mengaktifkan pencocokan fuzzy.

Parameter respons.

  • Jika operasi berhasil, daftar entri teks penyelesaian otomatis dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.GETSUG idx:redis res MAX_COUNT 2 FUZZY

Contoh keluaran:

1) "redis cluster"
2) "redis lock"

TFT.GETALLSUGS

Kategori

Deskripsi

Sintaks

TFT.GETALLSUGS index

Deskripsi perintah

Memperoleh semua entri teks penyelesaian otomatis dalam indeks yang ditentukan.

Parameter

  • index: Nama indeks yang ingin Anda tanyakan.

Parameter respons.

  • Jika operasi berhasil, daftar entri teks penyelesaian otomatis dikembalikan.

  • Jika tidak, pesan kesalahan dikembalikan.

Contoh

Contoh perintah:

TFT.GETALLSUGS idx:redis

Contoh keluaran:

1) "redis cluster"
2) "redis lock"
3) "redis is a memory database"

Agregasi

Anda dapat menambahkan klausa aggs (atau aggregations) ke permintaan TFT.SEARCH untuk mengagregasi hasil klausa query.

Penggunaan

Dalam kebanyakan kasus, dalam klausa aggs, Anda harus menentukan nama agregasi kustom, jenis agregasi, dan bidang agregasi (field). Hanya bidang bertipe numerik dan keyword yang didukung. Contohnya:

TFT.SEARCH shares '{"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Sum":{"sum":{"field":"purchase_price"}}}}'
# Tentukan Jay_Sum sebagai nama agregasi, sum sebagai jenis agregasi, dan purchase_price sebagai bidang agregasi.

Hasil yang dikembalikan berisi hasil kueri dari query dan hasil agregasi dari aggs:

{"hits":{"hits":[{"_id":"16581351808123930","_index":"today_shares0718","_score":1.0,"_source":{"shares_name":"XAX","logictime":14300210,"purchase_type":1,"purchase_price":101.1,"purchase_count":100,"investor":"Jay"}},{"_id":"16581351809626430","_index":"today_shares0718","_score":1.0,"_source":{"shares_name":"XAX","logictime":14300310,"purchase_type":1,"purchase_price":111.1,"purchase_count":100,"investor":"Jay"}}],"max_score":1.0,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Sum":{"value":212.2}}}
Catatan

Anda dapat menambahkan "size":0 ke pernyataan kueri sehingga hanya hasil aggs yang dikembalikan.

Jenis agregasi untuk aggs

Agregasi Metrik, Agregasi Terms, dan Agregasi Filter didukung oleh parameter aggs.

Kategori

Deskripsi

Agregasi metrik

Umumnya melakukan perhitungan numerik atau statistik pada bidang bertipe numerik (seperti integer, double, dll.), dan tidak mendukung sub-agregasi bersarang. Metrik berikut didukung:

  • sum: Menghitung jumlah.

  • max: Menghitung nilai maksimum.

  • min: Menghitung nilai minimum.

  • avg: Menghitung nilai rata-rata.

  • sum_of_squares: Menghitung jumlah kuadrat.

  • variance: Menghitung varians.

  • std_deviation: Menghitung deviasi standar.

  • value_count: Menghitung jumlah nilai tanpa deduplikasi, mendukung bidang bertipe numerik dan keyword.

  • extended_stats: Melakukan perhitungan untuk semua metrik di atas dan mengembalikan semua jenis hasil sekaligus.

Catatan

Kecuali untuk value_count, semua metrik lain hanya mendukung bidang bertipe numerik.

Keluaran: Nilai bertipe DOUBLE yang dihitung dari bidang tertentu.

Agregasi Terms

Menghitung jumlah nilai yang dideduplikasi. Hanya bidang bertipe keyword yang didukung. Agregasi bersarang didukung. Deskripsi parameter:

  • terms

    • field: Bidang agregasi. Hanya bidang bertipe keyword yang didukung.

    • size: Jumlah hasil yang dikembalikan. Nilai default: 10. Nilai valid: [1,65536).

    • order: Aturan pengurutan untuk objek yang dikembalikan. Nilai valid:

      • _count (default): Mengurutkan berdasarkan jumlah hasil. Nilai valid: desc (menurun, default) dan asc (menaik). Contoh: "order":{"_count":"desc"}.

      • _key: Mengurutkan berdasarkan karakter bidang target. Nilai valid: desc (menurun) dan asc (menaik). Contoh: "order":{"_key":"desc"}.

    • min_doc_count: Jumlah minimum dokumen. Nilai default: 1. Jika jumlah dokumen dalam hasil kueri kurang dari nilai ini, hasil tidak ditampilkan.

    • include: Menentukan string yang harus dimuat atau dicocokkan oleh nilai. Ketika bidang target bertipe String, pencocokan ekspresi reguler didukung. Ketika bidang target adalah array, string harus merupakan pencocokan eksak.

    • exclude: Menentukan string yang tidak boleh dimuat atau dicocokkan oleh nilai. Persyaratan tipe bidang target sama dengan include. Jika include dan exclude keduanya ada, include diperiksa terlebih dahulu, diikuti oleh exclude.

Contoh:

{
  "aggs": {
    "Per_Investor_Freq":{
      "terms": {
        "field": "investor"
      }
    }
  }
}

Keluaran: Objek JSON dengan nama agregasi sebagai kunci dan Object sebagai tipe. Dalam objek, agregasi kunci menggunakan buckets untuk menampilkan statistik. Setiap bucket berisi kunci (bidang agregasi) dan doc_count (jumlah dokumen yang terkait dengan bidang agregasi). Contoh:

{
  "aggregations": {
    "Per_Investor_Freq": {
      "buckets": [
        {
          "doc_count": 2,
          "key": "Jay"
        },
        {
          "doc_count": 1,
          "key": "Mila"
        }
      ]
    }
  }
 }

Agregasi Filter

Anda dapat memasukkan pernyataan query dalam filter untuk lebih lanjut memfilter hasil query. Sub-agregasi bersarang didukung.

Keluaran: Jumlah dokumen (doc_count) yang cocok dengan kondisi filter.

Contoh agregasi

  1. Buat indeks.

    TFT.CREATEINDEX today_shares '{"mappings":{"properties":{"shares_name":{"type":"keyword"},"logictime":{"type":"long"},"purchase_type":{"type":"integer"},"purchase_price":{"type":"double"},"purchase_count":{"type":"long"},"investor":{"type":"keyword"}}}}'
    # Buat indeks yang merepresentasikan volume perdagangan saham hari ini.
    # shares_name: Nama setiap saham.
    # logictime: Waktu saat transaksi selesai.
    # purchase_type: Jenis pembelian.
    # purchase_price: Harga pembelian.
    # purchase_count: Jumlah saham yang dibeli.
    # investor: ID investor.

    Keluaran yang diharapkan:

    OK
  2. Tambahkan data dokumen.

    Jalankan perintah berikut:

    TFT.ADDDOC today_shares '{"shares_name":"XAX","logictime":14300210, "purchase_type":1,"purchase_price":101.1, "purchase_count":100,"investor":"Jay"}'
    TFT.ADDDOC today_shares '{"shares_name":"XAX","logictime":14300310, "purchase_type":1,"purchase_price":111.1, "purchase_count":100,"investor":"Jay"}'
    TFT.ADDDOC today_shares '{"shares_name":"YBY","logictime":14300410, "purchase_type":1,"purchase_price":11.1, "purchase_count":100,"investor":"Mila"}'

    Keluaran yang diharapkan:

    OK
  3. Lakukan kueri.

    Contoh kueri:

    sum

    # Tanyakan total jumlah yang dihabiskan Jay untuk membeli saham.
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Sum":{"sum":{"field":"purchase_price"}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Sum":{"value":212.2}}}

    max

    # Tanyakan jumlah terbesar yang dihabiskan Jay untuk membeli satu saham. 
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Max":{"max":{"field":"purchase_price"}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Max":{"value":111.1}}}

    avg

    # Tanyakan jumlah rata-rata yang dihabiskan Jay untuk membeli saham yang berbeda. 
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Avg":{"avg":{"field":"purchase_price"}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Avg":{"value":106.1}}}

    std_deviation

    # Tanyakan deviasi standar jumlah yang dihabiskan Jay untuk membeli saham.
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Std_Deviation":{"std_deviation":{"field":"purchase_price"}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Std_Deviation":{"value":5.0}}}

    extended_stats

    # Tanyakan statistik jumlah yang dihabiskan Jay untuk membeli saham. 
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"investor":"Jay"}},"aggs":{"Jay_Extended_Stats":{"extended_stats":{"field":"purchase_price"}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":2}},"aggregations":{"Jay_Extended_Stats":{"count":2,"sum":212.2,"max":111.1,"min":101.1,"avg":106.1,"sum_of_squares":10221.21,"variance":25.0,"std_deviation":5.0}}}

    terms

    # Tanyakan investor yang telah menyelesaikan setidaknya dua transaksi.
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"purchase_type":1}},"aggs":{"Per_Investor_Freq":{"terms":{"field":"investor","min_doc_count":2,"order": {"_key":"desc"}}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":3}},"aggregations":{"Per_Investor_Freq":{"buckets":[{"key":"Jay","doc_count":2}]}}}

    Agregasi terms bersarang

    # Tanyakan jumlah transaksi dan harga pembelian rata-rata untuk setiap saham, tidak termasuk saham XAX.
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"purchase_type":1}},"aggs":{"Per_Investor_Freq":{"terms":{"field":"shares_name","include":"[A-Z]+","exclude":["XAX"]},"aggs":{"Price_Avg":{"avg":{"field":"purchase_price"}}}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":3}},"aggregations":{"Per_Investor_Freq":{"buckets":[{"key":"YBY","doc_count":1,"Price_Avg":{"value":11.1}}]}}}

    Agregasi filter bersarang

    # Tanyakan jumlah saham yang dibeli oleh Jay dan statistik keseluruhan (nilai metrik).
    TFT.SEARCH today_shares '{"size":0,"query":{"term":{"purchase_type":1}}, "aggs":{"Jay_BuyIn_Filter": {"filter": {"term":{"investor": "Jay"}},"aggs":{"Jay_BuyIn_Quatation":{"extended_stats":{"field":"purchase_price"}}}}}}'
    
    # Keluaran yang diharapkan:
    {"hits":{"hits":[],"max_score":null,"total":{"relation":"eq","value":3}},"aggregations":{"Jay_BuyIn_Filter":{"doc_count":2,"Jay_BuyIn_Quatation":{"count":2,"sum":212.2,"max":111.1,"min":101.1,"avg":106.1,"sum_of_squares":10221.21,"variance":25.0,"std_deviation":5.0}}}}