PostgreSQL Elasticsearch FDW:高效集成搜索与数据库

PostgreSQL Elasticsearch FDW:高效集成搜索与数据库

postgres-elasticsearch-fdwPostgres to Elastic Search Foreign Data Wrapper项目地址:https://gitcode.com/gh_mirrors/po/postgres-elasticsearch-fdw

项目介绍

PostgreSQL Elasticsearch FDW 是一个强大的开源工具,它允许用户在Elasticsearch中索引数据,并从PostgreSQL中进行搜索。通过这个工具,用户不仅可以读取数据,还可以进行写操作,实现了数据库与搜索引擎的无缝集成。

项目技术分析

技术栈

  • Elasticsearch: 作为数据索引和搜索的核心引擎。
  • PostgreSQL: 作为关系型数据库,提供数据存储和管理功能。
  • Multicorn: 一个PostgreSQL扩展,允许用户创建自定义的外部数据包装器(FDW)。
  • Python: 用于编写和安装Elasticsearch客户端及FDW。

版本支持

项目支持多个版本的Elasticsearch和PostgreSQL,具体如下:

| Elasticsearch | 依赖安装命令 | |---------------|--------------| | 5 | sudo pip install "elasticsearch>=5,<6" | | 6 | sudo pip install "elasticsearch>=6,<7" | | 7 | sudo pip install "elasticsearch>=7,<8" |

| PostgreSQL | 依赖安装命令 | |------------|--------------| | 9.4 | sudo apt-get install postgresql-9.4-python-multicorn | | 9.5 | sudo apt-get install postgresql-9.5-python-multicorn | | 9.6 | sudo apt-get install postgresql-9.6-python-multicorn | | 10 | sudo apt-get install postgresql-10-python-multicorn | | 11 | sudo apt-get install postgresql-11-python-multicorn | | 12 | sudo apt-get install postgresql-12-python3-multicorn | | 13 | sudo apt-get install postgresql-13-python3-multicorn |

对于PostgreSQL 13及以上版本,推荐使用Multicorn 2,这是一个积极维护的版本。

安装步骤

  1. 安装系统级依赖:
    sudo apt-get install python python-pip
    
  2. 根据PostgreSQL版本安装相应的Multicorn。
  3. 安装Elasticsearch客户端依赖。
  4. 使用pip安装FDW:
    sudo pip install pg_es_fdw
    

项目及技术应用场景

应用场景

  • 全文搜索:在数据库中存储结构化数据,同时利用Elasticsearch进行高效的全文搜索。
  • 实时分析:结合PostgreSQL的事务处理能力和Elasticsearch的实时搜索能力,进行实时数据分析。
  • 数据集成:将多个数据源的数据集成到一个统一的搜索平台中。

技术优势

  • 高效搜索:利用Elasticsearch的强大搜索能力,实现快速的全文搜索。
  • 数据一致性:通过FDW,确保数据库与搜索引擎之间的数据一致性。
  • 灵活配置:支持多种配置选项,如排序、刷新策略、查询语法等,满足不同场景的需求。

项目特点

主要特点

  • 双向操作:支持从PostgreSQL读取和写入数据到Elasticsearch。
  • 版本兼容性:支持多个版本的Elasticsearch和PostgreSQL,确保广泛的适用性。
  • 灵活查询:支持URI Search和Query DSL两种查询语法,满足不同的查询需求。
  • 性能优化:通过配置选项,如refreshcomplete_returning,优化性能。

使用示例

创建服务器和外部表
CREATE EXTENSION multicorn;

CREATE SERVER multicorn_es FOREIGN DATA WRAPPER multicorn
OPTIONS (
  wrapper 'pg_es_fdw.ElasticsearchFDW'
);

CREATE FOREIGN TABLE articles_es
    (
        id BIGINT,
        title TEXT,
        body TEXT,
        metadata JSON,
        query TEXT,
        score NUMERIC,
        sort TEXT
    )
SERVER multicorn_es
OPTIONS
    (
        host 'elasticsearch',
        port '9200',
        index 'article-index',
        type 'article',
        rowid_column 'id',
        query_column 'query',
        query_dsl 'false',
        score_column 'score',
        default_sort 'last_updated:desc',
        sort_column 'sort',
        refresh 'false',
        complete_returning 'false',
        timeout '20',
        username 'elastic',
        password 'changeme'
    );
插入数据
INSERT INTO articles_es
    (
        id,
        title,
        body,
        metadata
    )
VALUES
    (
        1,
        'foo',
        'spike',
        '{"score": 3}'::json
    );
查询数据
SELECT
    id,
    title,
    body,
    metadata
FROM
    articles_es
WHERE
    query = 'body:chess';

通过PostgreSQL Elasticsearch FDW,您可以轻松地将Elasticsearch的强大搜索能力与PostgreSQL的数据管理功能结合起来,实现高效的数据处理和搜索。无论是全文搜索、实时分析还是数据集成,这个工具都能为您提供强大的支持。立即尝试,体验其带来的便利和效率提升!

postgres-elasticsearch-fdwPostgres to Elastic Search Foreign Data Wrapper项目地址:https://gitcode.com/gh_mirrors/po/postgres-elasticsearch-fdw

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邱敬镇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值