ZomboDB integra os recursos de pesquisa de texto completo e análise do Elasticsearch diretamente ao PostgreSQL. Ele oferece um conjunto completo de linguagens de consulta para dados relacionais, assume o controle de índices remotos do Elasticsearch e garante a consistência transacional dos resultados de pesquisa de texto — permitindo executar consultas com Elasticsearch via SQL padrão, sem precisar lidar com problemas de sincronização ou comunicação.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância RDS executando PostgreSQL 11 com versão secundária do mecanismo 20230830 ou posterior
Este plugin era compatível com versões secundárias anteriores à 20230830. No entanto, para padronizar o gerenciamento de plugins e aprimorar a segurança, o RDS planeja otimizar plugins com riscos de segurança nas iterações de versão do kernel. Alguns plugins não podem ser criados em versões secundárias mais antigas. Se a sua instância executa uma versão secundária anterior à 20230830:
Se você já usa este plugin, a configuração existente não é afetada.
Se estiver criando o plugin pela primeira vez ou recriando-o, atualize a versão secundária do mecanismo para a mais recente antes de continuar.
Para mais detalhes, consulte Restrições na criação de plugins.
Como funciona
ZomboDB adiciona um método de acesso a índices personalizado (USING zombodb) ao PostgreSQL. Ao criar um índice ZomboDB em uma tabela, ele assume o controle dos índices remotos do Elasticsearch e garante a consistência transacional dos resultados de pesquisa de texto — sem necessidade de sincronização manual.
Instalar e remover a extensão
Instalação:
CREATE EXTENSION zombodb;
Remoção:
DROP EXTENSION zombodb;
Usar o ZomboDB
As etapas a seguir usam uma tabela products para demonstrar como criar um índice ZomboDB e executar consultas de texto completo.
Etapa 1: Crie a 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
CREATE INDEX idxproducts
ON products
USING zombodb ((products.*))
WITH (url='localhost:9200/');
A cláusula WITH (url=...) especifica o endpoint do Elasticsearch, que aponta para um cluster do Elasticsearch em execução. Substitua localhost:9200/ pelo endereço do seu cluster Elasticsearch.
Etapa 3: Consulte usando ZomboDB
A linguagem de consulta do ZomboDB (ZQL) oferece suporte a operadores booleanos, correspondência por proximidade e condições de intervalo numérico. A consulta a seguir combina múltiplas condições:
SELECT *
FROM products
WHERE products ==> '(keywords:(sports OR box) OR long_description:"wooden away"~5) AND price:[1000 TO 20000]';
Para a referência completa da sintaxe ZQL, consulte a documentação do ZomboDB.