简体中文
Appearance
简体中文
Appearance
日志表模型是针对日志检索场景优化的数据模型。Datalayers 结合列式存储、分区机制与倒排索引能力,支持高吞吐写入与低延迟检索。
在日志场景中,建议优先明确以下目标:
CREATE TABLE [IF NOT EXISTS] [database.]table_name
(
ts TIMESTAMP [ DEFAULT default_expr ],
service STRING,
level STRING,
message STRING,
...,
TIMESTAMP KEY (ts),
[ INVERTED INDEX [index_name] (message_column) [WITH (key=value, ...)] ]
)
PARTITION BY HASH(partition_key) PARTITIONS n
[ENGINE=TimeSeries]
[ WITH ( [ key = value ] [, ... ] ) ]在通用日志场景中,通常按 service 做分区,日志正文放在 message 字段,并在建表时直接声明倒排索引。
| 字段 | 备注 |
|---|---|
| ts | 日志时间(必须字段) |
| service | 服务名/应用名,用于隔离与过滤 |
| level | 日志级别(INFO/WARN/ERROR) |
| message | 日志正文,用于全文检索 |
建表语句如下:
CREATE TABLE logs (
ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
service STRING NOT NULL,
level STRING,
message STRING,
timestamp key(ts),
inverted index idx_message (message) with (tokenizer=standard, with_position=true)
)
PARTITION BY HASH(service) PARTITIONS 2;说明:
ts 必须为 TIMESTAMP,并通过 TIMESTAMP KEY 指定message 建议使用 STRING,作为全文检索主字段service 有利于按服务过滤和并行查询在多租户场景中,建议使用 tenant_id 作为分区键,先按租户过滤,再在日志正文中做全文检索。
| 字段 | 备注 |
|---|---|
| ts | 日志时间 |
| tenant_id | 租户标识 |
| host | 主机或节点 |
| message | 日志正文 |
建表语句如下:
CREATE TABLE tenant_logs (
ts TIMESTAMP NOT NULL,
tenant_id STRING NOT NULL,
host STRING,
message STRING,
timestamp key(ts),
inverted index idx_tenant_message (message) with (tokenizer=standard, with_position=true)
)
PARTITION BY HASH(tenant_id) PARTITIONS 4;说明:
tenant_id 作为分区键可提升租户内查询效率tokenizer(如 standard / chinese)standard 分词器基于空格和标点符号进行分词,适合英文文本filters 指定过滤器链(如 lowercase,english_stop,english_stemmer)with_position=true 可支持更精确的短语检索与相关性排序PARTITIONS 数量在建表后不支持动态修改,需在建表阶段一次性规划service、tenant_id)