配置列映射

通过开源客户端使用搜索索引需要将宽表的数据同步至索引表,同步的方法是建立宽表和索引表的列映射,本文介绍列映射的配置项说明。

配置示例

宽表和索引表的列映射采用JSON文件实现,列映射的配置示例如下,将宽表testTable的数据同步至索引表democollection,宽表的f:name这一列映射到索引表的f_name_s这一列,宽表的f:age这一列映射到索引表的f_age_i这一列。

{
  "sourceNamespace": "default",
  "sourceTable": "testTable",
  "targetIndexName": "democollection",
  "indexType": "ES",
  "rowkeyFormatterType": "STRING",
  "fields": [
    {
      "source": "f:name",
      "targetField": "name_s",
      "type": "STRING"
    },
     {
      "source": "f:age",
      "targetField": "age_i",
      "type": "INT"
    }
  ]
}
重要

请确保列映射中的每一列在搜索引擎中均已显式定义,且列名、数据类型与列映射一致。

配置项说明

宽表和索引表的列映射配置参数说明如下:

参数

说明

sourceNamespace

宽表的Namespace名,如果宽表没有Namespace,默认Namespace名为default。

sourceTable

必选项,宽表的表名。

targetIndexName

必选项,Lindorm搜索引擎的索引表名。

indexType

默认配置为ES。

rowkeyFormatterType

表示宽表中每行主键映射到索引表主键ID(数据类型为String)的方式,支持以下两种:

  • STRING:适用于宽表的主键为String类型,例如主键为row1,order0001。该方式使用Bytes.toString(byte[])函数将宽表的主键转成索引表主键ID。用户在索引中基于条件查出结果数据的主键ID后,可以使用Bytes.toBytes(String)函数将主键ID转成宽表主键。

  • HEX:适用于宽表的主键不是String类型,例如主键为12345。该方法使用org.apache.commons.codec.binary.Hex包中的encodeAsString(byte[])函数将宽表的主键转成索引表主键ID。用户在索引中基于条件查出结果数据的主键ID后,可以使用Hex.decodeHex(String.toCharArray())函数将主键ID转成宽表主键。

fields

指定映射的列和类型,由以下三个参数组成。如果有多个列的配置使用半角逗号(,)分隔。

  • source:宽表中需要映射的列名,列族名和列名使用半角冒号(:)分隔。

  • targetField:映射到索引表中的列名。

  • type:宽表中需要映射的列的数据类型,配置时区分大小写,包括以下数据类型:

    • INT

    • LONG

    • STRING

    • BOOLEAN

    • FLOAT

    • DOUBLE

    说明

    确保宽表的数据类型与配置的数据类型一致,否则会影响到索引数据的生成。在宽表引擎中需要您通过调用Bytes.toBytes(string/long/int/...)方法将对应的数据类型转化为Bytes存储至宽表中。