使用postgres_fdw 串接elasticsearch fdw
  TEZNKK3IfmPf 2023年11月14日 22 0

目的很简单,主要还是elasticsearch fdw 的镜像太大,为了减少all-in-one 的大小,实现一个层级的数据模型

环境准备

  • docker-compose 文件
version: "3"
services:
  elasticsearch:
    image: elasticsearch:7.6.0
    environment:
      - "discovery.type=single-node"
      - "http.host=0.0.0.0"
      - "cluster.name=odfe-cluster"
      - "transport.host=0.0.0.0"
      - "network.host=0.0.0.0"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
    - 9200:9200
  psotgres-fdw:
    image: dalongrong/pg-es-fdw:11
    ports:
      - "5432:5432"
    environment:
      - "POSTGRES_PASSWORD=dalong"
  pg:
    image: dalongrong/pgspider:pg_cron
    ports: 
    - "5433:5432"
    environment:
      - "POSTGRES_PASSWORD=dalong"
  • 启动服务
docker-compose up -d

集成elasticsearch fdw 以及postgres_fdw

  • 说明
    postgres-fdw 服务为pg 11 版本的es 扩展,主要为了集成es,pg 服务为包含了postgres_fdw pg_cron,扩展以及pgspider
    pg 服务通过postgres_fdw 集成包含了elasticsearch fdw 扩展的服务
  • 配置elasticsearch fdw 扩展
 
// 创建扩展
CREATE EXTENSION multicorn;
//  创建server
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,
        query TEXT,
        score NUMERIC
    )
SERVER multicorn_es
OPTIONS
    (
        host 'elasticsearch',
        port '9200',
        index 'article-index',
        type 'article',
        rowid_column 'id',
        query_column 'query',
        score_column 'score',
        timeout '20'
    )
;
// insert 数据
INSERT INTO articles_es
    (
        id,
        title,
        body
    )
VALUES
    (
        1,
        'foo',
        'spike'
    );

效果
使用postgres_fdw 串接elasticsearch fdw

 

 

  • pg 服务 集成elasticsearch fdw
    通过postgres_fdw 集成elasticsearch fdw
 
//  创建扩展
create extension postgres_fdw;
// 创建server
CREATE SERVER pg_server
  FOREIGN DATA WRAPPER postgres_fdw
  OPTIONS (host 'psotgres-fdw', dbname 'postgres');
// 创建用户映射
CREATE USER MAPPING FOR postgres
  SERVER pg_server
  OPTIONS (user 'postgres', password 'dalong');
// 创建schema
CREATE SCHEMA app;
// 导入schema
IMPORT FOREIGN SCHEMA public
  FROM SERVER pg_server
  INTO app;
// 数据查询
select * from app.articles_es;

效果
使用postgres_fdw 串接elasticsearch fdw

 

 

说明

通过各种fdw 的集成我们可以灵活的进行数据的聚合处理,同时结合 pg_cron可以做一些简单的数据任务处理

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
TEZNKK3IfmPf