zombodb 数据类型映射
zombodb 与es 数据类型的映射处理
- 通用数据类型映射
| Postgres 类型 | Elasticsearch JSON 映射定义 |
|---|---|
bytea |
{"type": "binary"} |
boolean |
{"type": "boolean"} |
smallint |
{"type": "short"} |
integer |
{"type": "integer"} |
bigint |
{"type": "long"} |
real |
{"type": "float"} |
double precision |
{"type": "double"} |
character varying |
{"type": "keyword", "copy_to": "zdb_all", "normalizer": "lowercase", "ignore_above": 10922} |
text |
{"type": "text", "copy_to": "zdb_all", "analyzer": "zdb_standard", "fielddata": true} |
time without time zone |
{"type": "date", "format": "HH:mm:ss.SSSSSS", "copy_to": "zdb_all"} |
time with time zone |
{"type": "date", "format": "HH:mm:ss.SSSSSSZZ", "copy_to": "zdb_all"} |
date |
{"type": "date", "copy_to": "zdb_all"} |
timestamp without time zone |
{"type": "date", "copy_to": "zdb_all"} |
timestamp with time zone |
{"type": "date", "copy_to": "zdb_all"} |
json |
{"type": "nested", "include_in_parent": true} |
jsonb |
{"type": "nested", "include_in_parent": true} |
inet |
{"type": "ip", "copy_to": "zdb_all"} |
zdb.fulltext |
{"type": "text", "copy_to": "zdb_all", "analyzer": "zdb_standard"} |
zdb.fulltext_with_shingles |
{"type": "text", "copy_to": "zdb_all", "analyzer": "fulltext_with_shingles", "search_analyzer": "fulltext_with_shingles_search"} |
- 说明
character varying (varchar) 没有被es 分词,整个值是被索引的,同时转换为小写
text 类型es 使用标准分析器,同时被转换为小写
json/jsonb 映射为es 的 nested对象
zombodb 自定义的领域类型
- zdb.fulltext 和text 类似,但可以为客户端应用程序提供额外的元数据信息,表明该列可能包含大量内容
- zdb.fulltext_with_shingles 与zdb.fulltext 类型 ,但是通过
2-gram single filter支持高速的右截断通配符
特定语言类型
支持包好各类语言的支持
自定义分析器
zombodb 支持基于sql 扩展灵活的分析器、、过滤器
- 分析器函数定义
FUNCTION zdb.define_analyzer(name text, definition json)
- 使用说明
为了使用自定义分析器你同时必须自定义使用相同名称的pg domain然后在表中作为列使用,同时
你也可以和自定义字段映射依赖使用通过zdb.define_field_mapping()函数,注意修改任何分析器需要
重建索引 - token 过滤器
FUNCTION zdb.define_filter(name text, definition json)
- character 过滤器
FUNCTION zdb.define_char_filter(name text, definition json)
- tokenizer
FUNCTION zdb.define_tokenizer(name text, definition json)
- normalizer
FUNCTION zdb.define_normalizer(name text, definition json)
- type 映射
FUNCTION zdb.define_type_mapping(type_name regtype, definition json)
特定字段的映射函数
除过domain type 映射pg type 到es 分析器,我们同时也可以定义表或者表中字段的映射,
注意修改字段的映射需要重建索引
- 方法签名
FUNCTION zdb.define_field_mapping(table_name regclass, field_name text, definition json)
- 一个特殊映射函数
比较适合处理只在es 索引中存在的,比如映射到copy_to 属性
FUNCTION zdb.define_es_only_field(table_name regclass, field_name text, definition json)
参考例子
- 代码
注意官方create index部分有点问题,我添加了url 参数,实际使用可以参考github 项目,有基于docker-compose 的代码
SELECT zdb.define_tokenizer('example_tokenizer', '{
"type": "pattern",
"pattern": "_"
}');
SELECT zdb.define_analyzer('example', '{
"tokenizer": "example_tokenizer"
}');
CREATE DOMAIN example AS text;
CREATE TABLE foo (
id serial8,
some_field example
);
CREATE INDEX idxfoo ON foo USING zombodb ((foo.*))
WITH (url='http://elasticsearch:9200/');
INSERT INTO foo (some_field) VALUES ('this_is_a_test');
SELECT * FROM foo WHERE foo ==> 'some_field:this';
测试分析器
zombodb 内置了一些函数方便我们进行分析器的测试
- 内置分析器分析函数签名
FUNCTION zdb.analyze_with_field(
index regclass,
field text,
text text)
RETURNS TABLE (
type text,
token text,
"position" int,
start_offset int,
end_offset int)
- 参考例子
SELECT * FROM zdb.analyze_with_field('idxproducts', 'keywords', 'this is a test');
type | token | position | start_offset | end_offset
------+----------------+----------+--------------+------------
word | this is a test | 0 | 0 | 14
(1 row)
es _all 字段说明
zombodb 禁止了es 的_all 字段使用了自己的字段命名 zdb_all,默认所有非数字的类型字段都添加到了zdb_all
参考资料
https://github.com/zombodb/zombodb/blob/master/TYPE-MAPPING.md
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html
https://www.cnblogs.com/rongfengliang/p/10638334.html
zombodb 数据类型映射的更多相关文章
- [转]jni数据类型映射、域描述符说明
在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 . 在JNI的世界里也存在类似的数据类型,与Java比较起来,其范围更具严格性,如下: 1.primitive types ---- ...
- Oracle 数据类型映射C#
Oracle 数据类型映射 下表列出 Oracle 数据类型及其与 OracleDataReader 的映射. Oracle 数据类型 由 OracleDataReader.GetValue 返回的 ...
- SQL Server 数据类型映射 (ADO.NET)
SQL Server 数据类型映射 (ADO.NET) .NET Framework 3.5 更新:November 2007 SQL Server 和 .NET Framework 基于不同的类型系 ...
- JNI实战(三):JNI 数据类型映射
在JNI实战(二):Java 调用 C 我们了解了JNI的静态注册和动态注册.也知道我们应该使用动态注册来进行JNI函数与Java方法之间的映射. 示例的映射表的数组为如下: static JNINa ...
- SQL Server 数据类型映射(转载)
SQL Server 数据类型映射 SQL Server 和 .NET Framework 基于不同的类型系统. 例如,.NET Framework Decimal 结构的最大小数位数为 28,而 S ...
- SQL Server 与 ADO.NET 数据类型映射
SQL Server 数据类型映射 .NET Framework 4.5 SQL Server 和 .NET Framework 基于不同的类型系统. 例如,.NET Framework Decima ...
- 006android初级篇之jni数据类型映射
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++) 使用JNI的副作用 一旦使用JNI,JAVA程序就丧失了JAV ...
- Razor视图引擎布局 Razor视图引擎的基本概念与法语 SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射 binary 和 varbinary datetime 和 smalldatetime float 和 real
Razor视图引擎布局 不需要像过去aspx一样,使用.Master文件,而是统一使用.cshtml 或 .vbhtml文件.但文件名一般以 _开头,这样做文件不会当做View显示出来 使用@Re ...
- JNI学习积累之二 ---- 数据类型映射、域描述符说明
本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 . 在JNI的世界里也存在类似的数据类型,与 ...
随机推荐
- .NET Core 管道过滤器扩展
if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseEx ...
- js数组和数组去重的几种简单的方法
http://blog.csdn.net/liangklfang/article/details/49300417 1.证明一个对象是数组的方法. 方法(1) [].constructor === A ...
- C#---装箱、拆箱的一个案例
using System; namespace ConsoleApplication1 { interface IInterface { void Add(int num); } struct Tes ...
- [Windows端口占用] 找到占用端口的进程并杀死
命令行: netstat -aon|findstr "80" 会得到类似下列的数据 TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2736 2736代表占用 ...
- axios和promise
什么是axios axios is a promise based HTTP client for the browser and node.js Features: Make XMLHttpRequ ...
- List 常用方法
List 计算集合中某属性值的总和 list.Sum(ins=>ins.Field); Sort()方法,摘要:使用默认比较器对整个 System.Collections.Generic.Lis ...
- 『TensorFlow』读书笔记_Inception_V3_下
极为庞大的网络结构,不过下一节的ResNet也不小 线性的组成,结构大体如下: 常规卷积部分->Inception模块组1->Inception模块组2->Inception模块组3 ...
- Lua 语言变量
Lua 变量 变量在使用前,必须在代码中进行声明,即创建该变量.编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值. Lua 变量有三种类型:全局变量.局部变量.表中的域. ...
- 【PAT】我要通过!
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...
- CRF++安装,提示libstdc++.so.6: version `GLIBCXX_3.4.20' not found解决
安装CRF++, 到CRF++网站CRF++: Yet Another CRF toolkit,下载C++源代码安装包(这里用的是 CRF++-0.58.tar.gz ),解压,进入解压文件并如下过程 ...