作业中源连接为配置Elasticsearch/云搜索服务(CSS)连接时,源端作业参数如表1所示。
表1 Elasticsearch或云搜索服务作为源端时的作业参数
参数名 |
说明 |
取值样例 |
索引 |
Elasticsearch的索引,类似关系数据库中的数据库名称。索引名称只能全部小写,不能有大写。 |
index |
类型 |
Elasticsearch的类型,类似关系数据库中的表名称。类型名称只能全部小写,不能有大写。 |
type |
拆分nested类型字段 |
可选参数,选择是否将nested字段的json内容拆分,例如:将“a:{ b:{ c:1, d:{ e:2, f:3 } } }”拆成三个字段“a.b.c”、“a.b.d.e”、“a.b.d.f”。 |
否 |
过滤条件 |
可选参数,CDM只迁移满足过滤条件的数据。
- 当前仅支持通过Elasticsearch的query string(即q语法)方式对源数据进行过滤。q语法使用方式介绍如下:
- 精确匹配时,直接使用column:data格式进行匹配过滤。其中column表示字段名,data表示查询条件,例如“last_name:Smith”。
另外,如果查询条件data为带空格的字符串,则需要用双引号包围。如果不指定column,则会对所有字段以data进行匹配。
- 多条查询条件时,可通过连接词组合多个查询条件,格式为column1:data1 AND column2:data2。其中,中间的连接词必须用全大写,可以为“AND”、“OR”或“NOT”,且连接词前后要有空格。
例如:“last_name:Smith AND last_name:John”。
- 范围匹配时,可以直接使用条件表达式的方式进行过滤,格式为column:>data。其中,操作符支持“>”、“>=”、“<”或“<=”。
例如:“time:>=1636905600000 AND time:<1637078400000”。也可以配合时间宏变量使用,如“createTime:>=${timestamp(dateformat(yyyyMMdd,-1,DAY))} AND createTime:< ${timestamp(dateformat(yyyyMMdd))}”。
- 范围匹配时,也支持使用范围区间语法的方式进行过滤,格式为column:{data1 TO data2}。其中,{”、“}”代表不包含该值,“[”、“]”代表包含该值,TO必须大写且前后要有空格,*代表所有。
例如:“time:{1636992000000 TO *]”,表示过滤time字段中大于1636992000000的所有数据。也可以配合时间宏变量使用,如“createTime:[${timestamp(dateformat(yyyyMMdd,-1,DAY))} TO ${timestamp(dateformat(yyyyMMdd))}}”。
- 暂不支持通过Elasticsearch的query DSL(即DSL语法,Domain Sepcified Language)查询方式对源数据进行过滤。
|
last_name:Smith |
抽取元字段 |
表示是否抽取索引的元字段,目前只支持(_index、_type、_id、_score)例如:_index、_type、_id、_score |
是 |
在下一步的字段映射中,源端和目的端均支持配置自定义字段。
图1 配置自定义字段