集成Elasticsearch(ZomboDB)

ZomboDB是一个PostgreSQL扩展插件,支持原生的访问方式,为PostgreSQL数据库带来了强大的文本索引和分析功能。

您可以加入RDS PostgreSQL插件交流钉钉群(103525002795),进行咨询、交流和反馈,获取更多关于插件的信息。

前提条件

  • RDS PostgreSQL实例版本为PostgreSQL 11。

  • 实例内核小版本为20230830或以上。

    重要

    20230830内核小版本之前已支持此插件,但为了规范插件管理,提升RDS PostgreSQL在插件侧的安全防护,RDS计划在内核版本迭代中陆续对部分存在安全风险的插件进行优化,部分插件在低内核小版本无法创建,更多信息,请参见【产品/功能变更】RDS PostgreSQL限制创建插件说明

    • 如果您的实例内核小版本低于20230830,且已经使用了此插件,则不影响使用。

    • 如果您首次创建或重新创建此插件,请升级内核小版本到最新。

背景信息

ZomboDB提供了一套全方位的查询语言,可以供您自由地查询关系型数据。此外,ZomboDB允许您创建ZomboDB类型的索引,此时ZomboDB完全接管远程的Elasticsearch,并负责文本搜索的事务正确性。

ZomboDB的优势在于允许您直接使用Elasticsearch的强大功能而不用处理同步、通信等问题。

插件的创建与删除

  • 创建插件

    CREATE EXTENSION zombodb;
  • 删除插件

    DROP EXTENSION zombodb;

示例

  1. 创建一个表。

    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
    );
  2. 为表添加ZomboDB类型的索引。

    CREATE INDEX idxproducts
              ON products
           USING zombodb ((products.*))
            WITH (url='localhost:9200/');
    说明

    WITH语句后跟随了Elasticsearch的地址,该地址指向了一个正在服务的Elasticsearch实例。

  3. 使用ZomboDB格式的查询语句进行查询。

    SELECT *
      FROM products
     WHERE products ==> '(keywords:(sports OR box) OR long_description:"wooden away"~5) AND price:[1000 TO 20000]';
    说明

    ZomboDB格式的查询语句详细规则请参见ZomboDB官方文档