在车联网场景中车辆的元数据包含了车辆的固有属性(例如车辆识别代码、车辆外壳颜色、发动机型号等)和最新状态数据(例如车辆当前GPS坐标、发动机的当前转速、车辆当前运行速度等)。本文介绍如何设计车联网场景下的数据表结构和多元索引结构。
数据表结构
假设存储车辆元数据的数据表名称为vehicles_metadata,表结构请参见下表。
关于表设计的更多信息,请参见表设计。
字段名称 | 类型 | 描述 |
vin_id(主键列) | String | 车辆识别代码,即车架号,用于唯一标识车辆。 |
v_color | String | 车辆外壳颜色。 |
license_plate_number | String | 车牌号码。 |
mileage | Double | 当前里程数。 |
speed | Double | 当前速度。 |
pressure_level | String | 压力值水平。 |
engine_rpm | Integer | 发动机转速。 |
inner_temp | Double | 车内温度。 |
outer_temp | Double | 车外温度。 |
gps | String | 车辆GPS坐标,例如 |
ignition_state | String | 点火状态。取值范围如下:
|
bms_soc | Double | 排放值。 |
多元索引结构
假设为vehicles_metadata数据表创建一个多元索引vehicles_metadata_index。多元索引结构请参见下表。请根据实际查询场景选择合适的索引字段以及字段类型。
多元索引和数据表中的数据类型必须相匹配,否则数据会被当做脏数据丢弃,尤其是Geo-point和Nested具有各自特定的格式。如果格式不匹配也会被当做脏数据丢弃,则会出现数据在表中能查询到,但是在多元索引中查询不到的情况。关于数据类型映射的更多信息,请参见数据类型映射。
字段名称 | 类型 |
vin_id | Keyword |
v_color | Keyword |
license_plate_number | Text |
mileage | Double |
speed | Double |
pressure_level | Keyword |
engine_rpm | Long |
inner_temp | Double |
outer_temp | Double |
gps | Geo-point |
ignition_state | Keyword |
bms_soc | Double |