使用介绍
支持的字段类型:TINYINT,SMALLINT,INTEGER,BIGINT,FLOAT,REAL,DOUBLE,NUMERIC,DECIMAL,TIME,TIMESTAMP
支持的比较符:<、>、<=、>=、=、!= 、<> 【注意:=、!= 、<>数值类型和字符类型均适用】
支持的值:NULL 与非NULL
场景举例
1.字符类型的过滤:field_string='a'
或field_string!='b'
注,写单引号、双引号或者不写引号均可;以下举例值为空和null的写法:
field = ''
field != ''
field <> ''
field = 'null'
field = 'NULL'
field != 'null'
field != 'NULL'
field <> 'null'
field <> 'NULL'
2.NULL值过滤:注,数值类型和字符类型均适用
#以下写法均正确
field = null
field = NULL
field != null
field != NULL
field <> null
field <> NULL
3.date或datetime字段类型条件过滤:createtime>'2021-02-05 00:00:00'
4.多条件过滤:status=1,literal_id='abcd',createtime>'2021-02-05 00:00:00'
注意事项
目前数据源过滤功能可用在RDS、PolarDB数据源中;
数据源过滤条件中的字段,需填写为数据库表字段,而不是开放搜索应用结构中的字段名;
数据源过滤条件生效后,只能拉取符合该条件的记录(全量和增量数据均生效)。例:配置了status=1的过滤条件后,rds中某一条原先status=1的文档改为了status=2,那么此时这条文档会在OpenSearch中被删除;
目前连接符只支持AND,暂不支持OR;AND语法由英文逗号代替;
##sql语句where内容为:
where status=1 and type=2
#在开放搜索数据源过滤处配置
where status=1 and type=2 #错误写法
status=1 and type=2 #错误写法
status=1,type=2 #正确写法
关于null判断,is null 和 is not null 均为错误写法,正确用法请参考场景举例中关于null值支持;
如果需要根据db表中的date或datetime字段进行过滤,假设db字段名为createtime,则数据源过滤条件中的时间格式必须需为:
createtime>'2018-03-01 00:00:00'
暂时不支持函数和表达式判断这类复杂操作,例:in(type,1,2,3) 或 length(title)>10
暂时不支持like,not like 例:like '%aaa' 或 not like '%bbb'
暂时不支持恒等式,例:1=1;
如果数据源处配置了主辅表,建议主表和辅表均使用数据源过滤功能,以免辅表数据占用不必要的存储空间;