You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
配置日志索引
索引数据类型
复制全文
下载 pdf
索引数据类型
为日志字段设置键值索引时,您需要为每个开启键值索引的字段设置数据类型(text、long、double 或 json)。字段的索引数据类型决定了您可以使用何种方式检索该字段,同时影响检索的精度和准确性。本文介绍各个数据类型的配置说明及注意事项。​
数据类型​
日志的字段值通常为文本类型或数值类型,您可以设置字段的索引数据类型为 text(字符串)、long(整型)或 double(浮点型),以满足日志检索需求。​
对于 json 等相对复杂的结构化数据,您可以设置索引的数据类型为 json。日志服务支持展开标准合法的 json 字段,您可以设置叶子节点的索引数据类型为 text、long 或 double ,以满足 json 嵌套结构的叶子节点字段检索需求。​
各索引字段的数据类型说明如下:​
​
类型​
说明​
text​
适用于字符串类型的字段。​
long​
适用于数值类型的字段,例如整型(Int 64)。​
设置类型为 long 后,可以通过数值范围查询日志字段,例如使用>等范围操作符语法进行检索。​
double​
适用于数值类型的字段,例如浮点型(64 bit)。​
设置类型为 double 后,可以通过数值范围查询日志字段,例如使用>等范围操作符语法进行检索。​
json​
适用于 json 类型的字段。​
支持对标准 json 类型字段建立索引,还可以设置其展开后每个子字段的索引数据类型。​
​
text 类型​
text 类型适用于字符串类型的字段。​
  • text 类型索引支持使用通配符*或?对该字段进行模糊检索。​
  • 开启全文索引后,日志服务默认将整条日志(除 __time__ 以外所有字段)设置为 text 类型。​
long 类型​
long 类型适用于数值类型的字段,例如整型(Int 64)。​
  • long 类型索引支持通过数值范围查询日志字段,例如使用>等范围操作符进行检索。​
  • long 类型索引不支持设置大小写敏感、中文分词和分词符, 且不支持模糊查询。​
  • 如果将浮点数类型、字符串类型字段的索引类型设置为 long,则无法查询该字段。​
double 类型​
double 类型适用于数值类型的字段,例如浮点型(64 bit)。​
  • double 类型索引支持通过数值范围查询日志字段,例如使用>等范围操作符进行检索。​
  • double 类型索引不支持设置大小写敏感、中文分词和分词符,且不支持模糊查询​
  • 如果将字符串类型字段的索引类型设置为 double,则无法查询该字段。​
json 类型​
日志服务支持对标准 json 类型字段建立索引,设置字段的索引数据类型为 json 后,还支持为其展开后每个子字段设置索引数据类型,设置子字段索引后,检索和分析时的粒度可以精确到子字段。​
  • 根据 json 中子字段的实际数据类型,可以将其索引数据类型设置为 text、long 或 double。​
  • 如果子字段的值为 Boolean 类型,则设置其索引数据类型为 text。​
json 子字段说明​
  • 名称规则​
  • 设置 json 子字段的键值索引时,通过.来表示 json 数据中字段之间的层级关系。​
  • 例如key1.key2.key3:表示 key3 是 key2 的子字段,key2 是 key1 的子字段。​
  • 子字段的名称不包含最顶层父字段名。​
  • 各个子字段名称不允许存在数据类型冲突的前缀父字段。​
  • 不允许同时配置子字段: key1.key2 、 key1.key2.key3 。​
  • 允许同时配置子字段: key1.key2.key3 、 key1.key2.key4。​
  • 自动索引​
  • ​​​
  • ​
    子字段配置​
    说明​
    自动索引​
    • 秒级生效。​
    • 支持子字段查询,不会更新索引配置中的子字段列表。​
    • 未配置子字段,则支持对父字段单独分析,不支持对父字段的单独查询。​
    自动索引统计​
    • 分钟级生效。​
    • 支持子字段查询、分析,会更新索引配置中的子字段列表。​
    ​
说明​
  • json 自动索引和手动配置索引存在检索分析差异。例如自动创建索引的子字段不支持在 SQL 语句、not key: * 语句中使用。​
  • 不支持为数值、数组类型值的子字段自动创建索引。​
  • 自动索引最大支持 500 个子字段。​
json 子字段设置限制​
  • 日志服务不支持值为 json 数组的字段建立索引,也不支持 json 数组中的字段建立索引。​
  • 仅支持在 json 字段维度设置大小写敏感、中文分词、分词符、开启统计等键值索引配置,text 类型的子字段默认沿用 json 字段的键值索引配置,不支持单独设置。​
  • 最多支持 20 层的 json 嵌套,即日志服务在某个 json 子字段中只能解析其最多 19 层数据。​
json 子字段异常场景处理​
  • 对于不合法的 json 对象,日志服务仅解析其标准合法的部分。​
  • 若日志服务检测到您在键值索引配置的 json 子字段和实际日志字段值的数据类型不符时,则整个 json 日志数据不可检索和分析。例如实际字段值为 zhangsan,字段类型设置为 double,此时整个 json 对象中的所有字段均不可检索分析。​
  • 日志服务支持 json 对象中的叶子节点建立索引,但不建议为包含叶子节点的子节点建立索引。若您为 json 对象中嵌套 json 对象建立索引,日志服务将把该子字段处的 json 对象值序列化成字符串处理。​
配置样例​
例如在应用服务日志的采集场景下,每一条日志表示一次用户请求,其中,info 字段为 json 对象格式的字段,表示某次服务请求的详细信息,info 字段中还嵌套了 json 对象格式的字段 response 和 developers。​
日志样例如下:​
​
{​
"product":"NewApp",​
"total_users":1000000,​
"avg_pv_per_day":1000000.0,​
"regions":[​
"cn-beijing",​
"cn-shanghai"​
],​
"info":{​
"api":"CreateIndex",​
"ip":[​
"192.168.1.101",​
"192.168.1.102"​
],​
"request_time":1667232000,​
"latency_time":0.01,​
"response":{​
"request_id":"a**********",​
"status":200,​
"error_msg":""​
},​
"developers":[​
{​
"name":"zhangsan",​
"email":"zhangsan@test.com"​
},​
{​
"name":"lisi",​
"email":"lisi@test.com"​
}​
]​
}​
}​
​
索引配置如下:​
  • 设置 info 字段的索引数据类型为 json,并根据其中子字段的实际数据类型为其设置对应的索引数据类型。例如为 response.error_msg、response.status 叶子节点子字段配置相应基本数据类型的键值索引。​
  • 由于 regions、 info.ip、info.developers 字段值为数组形式,日志服务不支持对这些字段配置有效的 json 键值索引。您可以使用JSON 函数解析父字段,并提取其中的内容进行检索分析。​
​​​
检索分析示例如下:​
​
分析场景​
检索语句​
检索包含 NewApp 的日志​
NewApp​
检索总用户量大于 10000 ,且日均访问量大于 10000.0 的日志​
total_users: >10000 AND avg_pv_per_day: >10000.0​
查看全部日志​
* | SELECT *​
筛选产品名称为 NewApp 的日志​
* | SELECT * WHERE product='NewApp'​
筛选总用户量大于 10000,且日均访问量大于 10000.0 的日志​
* | SELECT * WHERE total_users>10000 AND avg_pv_per_day>10000.0​
筛选请求 API 为 CreateIndex 的日志​
* | SELECT * WHERE info.api='CreateIndex'​
统计响应状态码不为 200 的日志数量​
* | SELECT COUNT(*) WHERE info.response.status<>200​
统计按照请求 NewApp API 进行聚合的日志数量​
* | SELECT info.api, COUNT(*) AS c WHERE product='NewApp' GROUP BY info.api​
​
​
最近更新时间:2026.08.27 18:33:35
这个页面对您有帮助吗?
有用
有用
无用
无用