数据源过滤条件(RDS/PolarDB)

使用介绍

  • 支持的字段类型: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;

  • 如果数据源处配置了主辅表,建议主表和辅表均使用数据源过滤功能,以免辅表数据占用不必要的存储空间;