O ZomboDB integra o mecanismo de pesquisa de texto completo e análise do Elasticsearch diretamente ao PolarDB for PostgreSQL. Diferentemente da pesquisa de texto completo nativa do PostgreSQL (tsvector/tsquery), o ZomboDB oferece resultados classificados por relevância, expressões de consulta complexas e análises facetadas em grandes conjuntos de dados, sem exigir código personalizado para sincronização ou integração.
Quando usar o ZomboDB
O ZomboDB é indicado quando sua aplicação precisa de recursos avançados de pesquisa de texto completo que vão além das capacidades nativas do PostgreSQL, como classificação por relevância, consultas de proximidade ou análises baseadas em agregação sobre grandes campos de texto.
Se seus requisitos se limitarem a correspondência simples de palavras-chave em tabelas pequenas, a pesquisa de texto completo nativa do PostgreSQL será suficiente e evitará a sobrecarga de manter um cluster externo do Elasticsearch.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster do PolarDB for PostgreSQL executando o PostgreSQL 11
Um cluster do Elasticsearch em execução (o ZomboDB não oferece suporte às versões 7.x e 8.x do Elasticsearch)
A URL do endpoint do cluster do Elasticsearch (por exemplo,
http://localhost:9200/)
Instale e remover o ZomboDB
Instale a extensão ZomboDB:
CREATE EXTENSION zombodb;
Remova a extensão quando ela não for mais necessária:
DROP EXTENSION zombodb;
Defina e consultar um índice ZomboDB
Este exemplo demonstra como crie uma tabela, construir um índice ZomboDB conectado a um cluster do Elasticsearch, inserir dados de amostra e execute uma consulta de texto completo.
Etapa 1: Crie uma tabela
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
);
Etapa 2: Crie um índice ZomboDB
Crie um índice que aponte para o seu cluster do Elasticsearch. O ZomboDB gerencia o índice remoto correspondente e o mantém sincronizado com sua tabela do PostgreSQL.
CREATE INDEX idxproducts
ON products
USING zombodb ((products.*))
WITH (url='localhost:9200/');
-- Replace localhost:9200 with your Elasticsearch cluster endpoint.
-- ZomboDB does not support Elasticsearch 7.x and 8.x.
Etapa 3: Inserir dados de amostra
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);
Etapa 4: Consultar usando o ZomboDB
Use o operador ==> — operador de pesquisa personalizado do ZomboDB — para execute uma expressão de consulta no índice. Essa expressão permite combinar correspondência de palavras-chave, proximidade de frases e filtros de intervalo em uma única consulta.
A consulta a seguir localiza produtos cujas keywords incluam sports ou box, ou cuja long_description contenha a frase wooden away dentro de um intervalo de cinco palavras, com price entre 1.000 e 20.000.
SELECT *
FROM products
WHERE products ==> '(keywords:(sports OR box) OR long_description:"wooden away"~5) AND price:[1000 TO 20000]';
Resultado esperado: as linhas referentes a Wooden Baseball Bat e Boxing Gloves correspondem à busca, pois seus preços estão dentro do intervalo especificado e suas palavras-chave ou descrições atendem à expressão de consulta.
Para conhecer a sintaxe completa de consultas do ZomboDB — incluindo correspondência de frases, operadores de proximidade e filtros de intervalo — consulte a
.
Próximos passos
Explore a sintaxe avançada de consultas e as agregações do ZomboDB na documentação do ZomboDB.
Consulte as extensões do PolarDB for PostgreSQL para conhecer outros plug-ins compatíveis.