boolean | UInt8 或 Bool | 在较新版本中,ClickHouse 支持将 Boolean 作为 UInt8 的别名。 |
keyword | String | 用于精确匹配过滤、分组和排序。 |
text | String | ClickHouse 的全文搜索能力有限;标记化需要借助自定义逻辑,例如将 tokens 与数组函数结合使用。 |
long | Int64 | 64 位有符号整数。 |
integer | Int32 | 32 位有符号整数。 |
short | Int16 | 16 位有符号整数。 |
byte | Int8 | 8 位有符号整数。 |
unsigned_long | UInt64 | 64 位无符号整数。 |
double | Float64 | 64 位浮点数。 |
float | Float32 | 32 位浮点数。 |
half_float | Float32 或 BFloat16 | 最接近的对应类型。ClickHouse 没有 16 位浮点类型。ClickHouse 提供 BFloat16,但它不同于 IEEE-754 half-float:half-float 以较小的范围换取更高精度,而 bfloat16 则牺牲精度以获得更大的范围,因此更适合机器学习工作负载。 |
scaled_float | Decimal(x, y) | 用于存储定点数值。 |
date | DateTime | 对应秒级精度的日期类型。 |
date_nanos | DateTime64 | ClickHouse 可通过 DateTime64(9) 支持纳秒级精度。 |
binary | String, FixedString(N) | 二进制字段需要进行 base64 解码。 |
ip | IPv4, IPv6 | 提供原生 IPv4 和 IPv6 类型。 |
object | Nested, Map, Tuple, JSON | ClickHouse 可使用 Nested 或 JSON 对类似 JSON 对象的结构进行建模。 |
flattened | String | Elasticsearch 中的 flattened 类型会将整个 JSON 对象存储为单个字段,从而无需完整映射即可灵活、无 schema 地访问嵌套键。在 ClickHouse 中,可使用 String 类型实现类似功能,但需要在 materialized view 中完成处理。 |
nested | Nested | 在用户使用 flatten_nested=0 的前提下,ClickHouse 的 Nested 列可为成组子字段提供类似语义。 |
join | NA | 没有直接对应的父子关系概念。在 ClickHouse 中通常不需要,因为支持跨表 join。 |
alias | Alias 列修饰符 | 可通过字段修饰符来支持别名。详见。例如,可对这些别名应用函数:size String ALIAS formatReadableSize(size_bytes) |
range types (*_range) | Tuple(start, end) 或 Array(T) | ClickHouse 没有原生 range 类型,但数值范围和日期范围可用 Tuple(start, end) 或 Array 结构表示。对于 IP 范围 (ip_range) ,可将 CIDR 值存储为 String,并使用 isIPAddressInRange() 等函数进行判断。或者,也可以考虑使用基于 ip_trie 的 lookup 字典来实现高效过滤。 |
aggregate_metric_double | AggregateFunction(...) 和 SimpleAggregateFunction(...) | 使用 aggregate function 状态和 materialized view 对预聚合指标进行建模。所有 aggregation 函数都支持 aggregate states。 |
histogram | Tuple(Array(Float64), Array(UInt64)) | 可使用数组或自定义 schema 手动表示桶及其计数。 |
annotated-text | String | 不内置支持实体感知搜索或注解。 |
completion, search_as_you_type | NA | 没有原生自动补全或建议器引擎。可通过 String 和 search functions 实现类似效果。 |
semantic_text | NA | 不支持原生语义搜索;请生成嵌入向量并使用向量搜索。 |
token_count | Int32 | 可在摄取期间手动计算标记数,例如使用 length(tokens()) 函数,或结合 Materialized 列实现。 |
dense_vector | Array(Float32) | 使用数组存储嵌入向量。 |
sparse_vector | Map(UInt32, Float32) | 可使用 Map 模拟稀疏向量。不支持原生稀疏向量。 |
rank_feature / rank_features | Float32, Array(Float32) | 不支持原生的查询时权重提升,但可以在评分逻辑中手动实现。 |
geo_point | Tuple(Float64, Float64) 或 Point | 使用 (纬度、经度) 的 Tuple。Point 也可作为 ClickHouse 类型使用。 |
geo_shape, shape | Ring, LineString, MultiLineString, Polygon, MultiPolygon | 原生支持地理形状和空间索引。 |
percolator | NA | 没有“为查询建立索引”这一概念。请改用标准 SQL + 增量materialized views。 |
version | String | ClickHouse 没有原生版本类型。请将版本存储为字符串,并在需要时使用自定义 UDF 函数进行语义化比较。如果需要范围查询,可考虑将其规范化为数值格式。 |