索引的创建是zombodb 的核心,我们都是需要先创建table,然后创建索引,创建的时候我们可以指定es 集群的地址,同时可能需要使用
一些地址api(比如数据直接存储在es 中而不是pg 中)

表创建

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,
manufacturer_id bigint
);

索引所有列

使用.*
参考

CREATE INDEX idxproducts
ON products
USING zombodb ((products.*))
WITH (...);

索引指定列

一般我们会使用自定义类型,方便索引的创建,如下:

CREATE TYPE products_idx_type AS (
id bigint,
name varchar,
short_summary text
);
CREATE INDEX idxproducts
ON products
USING zombodb ((
ROW(
id,
name,
short_summary
)::products_idx_type
))
WITH (...)

配置基于sql 逻辑的索引

CREATE TYPE products_idx_type AS (
id bigint,
name varchar,
description text
); CREATE INDEX idxproducts
ON products
USING zombodb ((
ROW(
id,
name,
COALESCE(short_summary, '') || ' ' || COALESCE(long_description, '')
)::products_idx_type
))
WITH (...)

基于函数的索引

我们可以使用函数来创建比较复杂的索引
如下,通过函数索引表的每行数据

  • 创建表
CREATE TABLE manufacturer (
id SERIAL8 NOT NULL PRIMARY KEY,
name text NOT NULL,
address1 text,
address2 text,
city varchar,
state varchar(2),
zip_code varchar,
phone varchar,
fax varchar,
support_email varchar
);
  • 创建自定义类型
CREATE TYPE products_idx_type AS (
id bigint,
name varchar,
short_summary text,
manufacturer jsonb
);
  • 函数创建
CREATE FUNCTION products_with_manufacturer(products) RETURNS products_idx_type IMMUTABLE STRICT LANGUAGE SQL AS $$
SELECT ROW($1.id, $1.name, $1.short_summary, (SELECT row_to_json(m) FROM manufacturer m WHERE m.id = $1.manufacturer_id))::products_idx_type;
$$;
  • 创建索引
CREATE INDEX idxproducts
ON products
USING zombodb (products_with_manufacturer(products))
WITH (...);
  • 数据检索,使用嵌套对象数据
SELECT * FROM products WHERE products ==> 'manufacturer.name:Sears';
  • 说明
    注意函数的实现语言,支持postgres 支持的任何语言,不只是sql,修改函数的实现,会触发数据的重新索引

参考资料

https://github.com/zombodb/zombodb/blob/master/CREATE-INDEX.md

 
 
 
 

zombodb 索引创建的更多相关文章

  1. mysql 优化实例之索引创建

    mysql 优化实例之索引创建 优化前: pt-query-degist分析结果: # Query 23: 0.00 QPS, 0.00x concurrency, ID 0x78761E301CC7 ...

  2. MongoDB索引创建(5)

    索引创建 1:索引提高查询速度,降低写入速度,权衡常用的查询字段,不必在太多列上建索引 2. 在mongodb中,索引可以按字段升序/降序来创建,便于排序 3. 默认是用btree来组织索引文件,2. ...

  3. Lucene7.1.0版本的索引创建与查询以及维护,包括新版本的一些新特性探索!

    一 吐槽 lucene版本更新实在太快了,往往旧版本都还没学会,新的就出来,而且每个版本改动都特别大,尤其是4.7,6,6,7.1.......ε=(´ο`*)))唉,但不可否认,新版本确实要比旧版本 ...

  4. 索引-mysql索引创建、查看、删除及使用示例

    mysql索引创建.查看.删除及使用示例 1.创建索引: ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引. ALTER TABLE table_name ADD ...

  5. solr索引创建流程

    solr索引创建流程: 分词组件Tokenizer 分词组件(Tokenizer)会做以下几件事情(这个过程称为:Tokenize),处理得到的结果是词汇单元(Token). 1.将文档分成一个一个单 ...

  6. SQL Server获取索引创建时间&重建时间&重组时间

    之前写过一篇博客"SQL Server中是否可以准确获取最后一次索引重建的时间?",里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild ...

  7. substr函数索引创建测试

    技术群里小伙伴,沟通说一条经常查询的SQL缓慢,单表SQL一个列作为条件,列是int数值类型,索引类型默认创建. 一.SQL文本substr函数索引创建测试 ,) nm1 ')需求,将上述SQL执行速 ...

  8. ES(ElasticSearch) 索引创建

    个人分类: ElasticSearchindex   环境:ES 6.2.2 os:Centos  7 kibana:6.2.2 1.创建新的索引(index) PUT indexTest001 结果 ...

  9. Database基础(二):MySQL索引创建与删除、 MySQL存储引擎的配置

    一.MySQL索引创建与删除 目标: 本案例要求熟悉MySQL索引的类型及操作方法,主要练习以下任务: 普通索引.唯一索引.主键索引的创建/删除 自增主键索引的创建/删除 建立员工表yg.工资表gz, ...

随机推荐

  1. 为虚拟机配置固定ip地址

    vim /etc/sysconfig/network-scripts/ifcfg-eth0 修改BOOTPROTO为static 新增IPADDR即可 如下图所示

  2. 第八届蓝桥杯省赛 K倍区间

    问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

  3. read_csv 的 names 和 index_col 参数作用

  4. 2.nginx配置教程

    1. nginx配置域名访问: 路径:vim /usr/local/nginx/conf/nginx.conf (这是我nginx的安装路径) 配置以后就不用通过ip(192.168.0.103)去访 ...

  5. 《F4+2》—基于原型的团队项目需求调研与分析

    任务一 1.调研对象 老师和学生 2.所开发的软件原型 太阳系模型软件 3.调研方法 问卷调查法 原型法 任务二 采用UML模型描述任务1所获取的用户需求,如下: 主要需求: 教师:把系统展示给学生, ...

  6. sigmod函数

    #include <cmath> //math.h double sigmod(double x) { return 1/(1+exp(-x)); }

  7. Crisp String CodeForces - 1117F (状压)

    #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> ...

  8. 数据结构与算法之PHP排序算法(插入排序)

    一.基本思想 插入排序算法是每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到所有元素插入完毕为止.   二.算法过程 1)将第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未 ...

  9. vue-router beforeEach死循环

    vue中页面跳墙处理 页面跳墙中使用 vue-router中的 beforeEach的死循环问题 问题展现 import Router from 'vue-router' const router = ...

  10. 服务调用restful或feign负载均衡ribbon