概述
ZomboDB使用Elasticsearch作为索引类型,为Postgres带来强大的文本搜索和分析功能。它全面的查询语言和SQL函数支持新的和创造性的方式来查询您的关系数据。
从技术角度来看,ZomboDB是一个100%本地Postgres扩展,实现Postgres的索引访问方法API。作为本地Postgres索引类型,ZomboDB允许在现有的g表上使用ZOBODB创建索引
CREATE INDEX ... USING zombodb
。这时,ZomboDB接管并完全管理远程Elasticsearch索引,并保证文本搜索结果的事务性正确。
ZomboDB允许您直接从Postgres使用Elasticsearch的强大功能和可伸缩性。您不必管理pg和es之间的事务同步和弹性搜索、异步索引管道、复杂的重新索引过程或多个数据访问代码路径之间的事务——ZOBODB打包完成。
安装需求
- Postgres 10.x, 11.x
- Elasticsearch 5.6.x, 6.x
- libcurl >=7.28.0 -多协议文件传输库
安装Postgres
https://www.cnblogs.com/zhi-leaf/p/11432054.html 这个下面基本上走一遍没有问题
CentOS版本:CentOS-7-x86_64-Minimal-1810
PostgreSQL版本: PostgreSQL 10.10, 64-bit
安装zombodb扩展
- 下载pg10 版本的扩展
wget https://www.zombodb.com/releases/v10-1.0.3/zombodb_centos7_pg10-10-1.0.3_1.x86_64.rpm
- 安装zombodb
rpm -Uvh zombodb_centos7_pg10-10-1.0.3_1.x86_64.rpm
之前采坑主要是没有用centos的系统,用的ubuntu就全是坑,改成centos一遍就好了
安装ES
Elasticsearch版本: 6.6.0
https://www.cnblogs.com/rongfengliang/p/10635311.html 这个链接下面会装pg会有很多问题,装es是没问题的
- 安装docker
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
- docker 加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://b3uey254.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 创建docker-compose.yml
version: '2'
services:
elasticsearch:
image: elasticsearch:6.6.0
ports:
- "9200:9200"
environment:
- http.host=0.0.0.0
- transport.host=0.0.0.0
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
- 配置系统vm 参数
echo vm.max_map_count=655360 >> /etc/sysctl.conf && sysctl -p
- 在文件目录启动
docker-compose up -d
测试案例
- 创建扩展
CREATE EXTENSION zombodb;
- 创建测试表
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
);
- 导入测试数据
COPY products FROM PROGRAM 'curl https://raw.githubusercontent.com/zombodb/zombodb/master/TUTORIAL-data.dmp';
- 创建索引
CREATE INDEX idxproducts
ON products
USING zombodb ((products.*))
WITH (url='http://localhost:9200/');
-
datagrip连接pg查看表结构
数据表结构及zombodb插件
- 查询
SELECT * FROM products WHERE products ==> 'sports box';
查询数据
引用
https://github.com/zombodb/zombodb#making-postgres-and-elasticsearch-work-together-like-its-2019
https://www.cnblogs.com/zhi-leaf/p/11432054.html
https://www.cnblogs.com/rongfengliang/p/10635311.html