ZomboDB mengintegrasikan mesin pencarian teks lengkap dan analitik Elasticsearch langsung ke dalam PolarDB for PostgreSQL. Berbeda dengan pencarian teks lengkap bawaan PostgreSQL (tsvector/tsquery), ZomboDB mendukung hasil yang diurutkan berdasarkan relevansi, ekspresi kueri kompleks, dan analitik berbasis faset pada set data besar—tanpa memerlukan kode sinkronisasi atau integrasi kustom.
Kapan menggunakan ZomboDB
ZomboDB cocok digunakan ketika aplikasi Anda memerlukan pencarian teks lengkap tingkat lanjut yang melampaui kemampuan pencarian teks lengkap bawaan PostgreSQL—misalnya, peringkat relevansi, kueri kedekatan (proximity queries), atau analitik berbasis agregasi pada bidang teks besar.
Jika kebutuhan Anda terbatas pada pencocokan kata kunci sederhana pada tabel kecil, pencarian teks lengkap bawaan PostgreSQL sudah cukup dan menghindari beban tambahan menjalankan kluster Elasticsearch eksternal.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster PolarDB for PostgreSQL yang menjalankan PostgreSQL 11
Kluster Elasticsearch yang sedang berjalan (ZomboDB tidak mendukung Elasticsearch 7.x dan 8.x)
URL Titik akhir kluster Elasticsearch (misalnya,
http://localhost:9200/)
Instalasi dan penghapusan ZomboDB
Instal ekstensi ZomboDB:
CREATE EXTENSION zombodb;Hapus ekstensi tersebut jika tidak lagi diperlukan:
DROP EXTENSION zombodb;Menyiapkan dan menjalankan kueri pada indeks ZomboDB
Contoh berikut memandu Anda melalui pembuatan tabel, pembuatan indeks ZomboDB yang terhubung ke kluster Elasticsearch, penyisipan data sampel, dan menjalankan kueri teks lengkap.
Langkah 1: Buat tabel
CREATE TABLE products (
id SERIAL8 NOT NULL PRIMARY KEY,
name text NOT NULL,
keywords varchar(64)[],
short_summary text,
long_description zdb.fulltext,
price bigint,
inventory_count integer,
discontinued boolean default false,
availability_date date
);Langkah 2: Buat indeks ZomboDB
Buat indeks yang mengarah ke kluster Elasticsearch Anda. ZomboDB mengelola indeks remote yang sesuai dan menjaganya tetap selaras dengan tabel PostgreSQL Anda.
CREATE INDEX idxproducts
ON products
USING zombodb ((products.*))
WITH (url='localhost:9200/');
-- Ganti localhost:9200 dengan Titik akhir kluster Elasticsearch Anda.
-- ZomboDB tidak mendukung Elasticsearch 7.x dan 8.x.Langkah 3: Masukkan data sampel
INSERT INTO products (name, keywords, short_summary, long_description, price, inventory_count)
VALUES
('Wooden Baseball Bat', ARRAY['sports', 'outdoor'],
'Classic wooden bat for recreational play.',
'A sturdy wooden bat suitable for backyard games and casual leagues.',
4999, 120),
('Boxing Gloves', ARRAY['sports', 'box', 'training'],
'Professional boxing gloves for heavy bag training.',
'Durable leather gloves with wrist support, ideal for gym workouts.',
14999, 45),
('Running Shoes', ARRAY['footwear', 'running', 'outdoor'],
'Lightweight shoes for road and trail running.',
'Breathable mesh upper with cushioned sole for long-distance comfort.',
8999, 200);Langkah 4: Jalankan kueri menggunakan ZomboDB
Gunakan operator ==>—operator pencarian kustom ZomboDB—untuk menjalankan ekspresi kueri terhadap indeks tersebut. Ekspresi ini mendukung pencocokan kata kunci, kedekatan frasa, dan filter rentang dalam satu kueri.
Kueri berikut mencari produk yang keywords-nya mencakup sports atau box, atau yang long_description-nya berisi frasa wooden away dalam jarak lima kata, dengan price antara 1.000 dan 20.000.
SELECT *
FROM products
WHERE products ==> '(keywords:(sports OR box) OR long_description:"wooden away"~5) AND price:[1000 TO 20000]';Hasil yang diharapkan: baris untuk Wooden Baseball Bat dan Boxing Gloves sesuai, karena harganya berada dalam rentang yang ditentukan dan kata kunci atau deskripsinya memenuhi ekspresi kueri.
Langkah berikutnya
Jelajahi sintaks kueri tingkat lanjut dan agregasi ZomboDB di dokumentasi ZomboDB.
Tinjau ekstensi PolarDB for PostgreSQL untuk Plugin lain yang didukung.