索引是一种数据存储结构,能减少日志数据的查询耗时。通过对日志配置相应索引后,可以对索引字段的数据进行相应的查询与分析。索引需配置合适的字段类型才能分析出您所需要的结果。
索引概念
索引配置是指对原始日志数据分词后的字段增加索引能力。当您使用关键词希望从原始日志内容中检索指定内容,例如检索出如下包含GET的完整日志内容:
10.20.20.10;[2024-06-01 21:52:37];GET /online/sample HTTP/1.1;200
如果不进行分词,该日志文本会作为一个整体,不能和关键词GET完全对应,因此不会被检索到。为满足该检索需求,需要将日志全文切分为多个独立、可搜索片段,每个片段称之为一个“词”,而这个过程称之为“分词”。若使用分词符 \n\t\r,;[]{}()&^*#@~=<>/\?:'"
进行分词,将得到以下词:10.20.20.10
、2024-06-01
、21:52:37
、 GET
、 online
、sample
、 HTTP
、1.1
、200
云日志服务将基于这些分词建立索引,索引是一种数据存储结构,可帮助您快速找到大量日志中的指定信息,如当检索条件为GET时,上述分词中包含GET,则认为符合检索条件。
索引类型
云日志服务的索引类型如下:
全文索引
全文索引将日志全文整体切分为多个分词进行索引构建,默认分词符为 \n\t\r,;[]{}()&^*#@~=<>/\?:'"
等非字母数字字符。
开启全文索引后,您在查询日志时可直接通过关键词进行查询(即全文查询),例如使用 error
检索所有出现过 error 的日志。
说明
内置保留字段不包含在全文索引中,若需要查询内置保留字段,您需要通过字段索引Key:Value的方式进行搜索。详情请见内置保留字段。
查询时对大小写敏感。例如日志为 Error,则使用 error 无法查询到该条日志。
字段索引
字段索引将原始日志按字段(即 key:value)分别切分为多个分词进行索引构建,配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询,缩小查询范围。例如使用 level:error AND timeCost:>1000
检索日志级别(level)为 error 且耗时(timeCost)大于 1000ms 的日志。
说明
云日志服务默认为部分内置保留字段创建字段索引,请参考内置保留字段。
查询时对大小写敏感。例如示例日志level字段中含有Error,则'level:error'将无法查询到该日志。
索引字段类型
目前支持两种数据类型配置,如下:
字段类型 | 说明 |
---|---|
text | 字符串,大小写敏感。 |
double | 浮点型,可存储整数和浮点数。 |
索引配置步骤
您可以在日志接入流程中配置索引,或接入完成后在日志单元中配置索引。以下以在日志单元中配置索引为例,介绍索引配置流程。
- 登录云日志服务控制台。
- 在日志管理页面的日志项目列表中,点击已创建的日志单元名称,进入日志单元详情页面。
- 点击【设置】按钮,打开【索引配置】标签页,进入索引配置界面。
- 配置全文索引:
在索引配置页面中,“全文索引”为开启状态则表示已创建全文索引。 - 配置字段索引:
在字段索引下方,点击【添加】按钮,输入字段名称入与字段类型,其中字段名称需要与采集规则中的分词 key 一致。具体请看下方的索引配置参数说明。 - 如果日志格式为JSON,您可点击【批量添加字段】按钮,批量添加界面可自动获取最新的一条日志,并自动解析JSON的字段名称和类型。
- 配置完成后点击确定,索引将在1-2分钟后生效,且仅对新数据生效。
索引配置参数说明如下:
参数 | 说明 |
---|---|
字段名称 | 采集的日志字段名称,仅支持数字、字母、下划线、连字符(-)、点(.),且不能以__开头,64个字符内。 |
字段类型 | 字段的数据类型。目前支持 double - 浮点型,text - 字符串。其中double也可存储整型数据。 |
别名 | 预留字段,后续用于日志仪表盘等场景展示更易读的名称。 |
注意
创建索引字段时,字段数量最为100个。
配置的索引字段名称需要与采集规则中的分词 key 一致,否则配置的索引字段无效。
字段名称不允许以双下划线(__)开头。
编辑索引配置后(新增、编辑、删除字段,修改配置项等操作),将在1-2分钟后生效,并仅对新写入的日志生效,已有日志数据不会更新。当前不支持对历史日志重建索引。
示例说明
分别以单行日志与JSON日志为例,介绍应该如何配置索引。
单行日志
以下为单行日志示例:
36.111.30.4 GET /app/user/login 200
若配置采集规则时以空格作为分隔符,则日志将被解析成四个字段,并将四个字段指定对应的key为ip、method、url、status,采集后的日志将如下所示:
ip:36.111.30.4
method: GET
url: /app/user/login
status: 200
__message __: 36.111.30.4 GET /app/user/login 200
__tag__topic: xxxx
__tag__fileName: xxxx
按照这种场景,可使用以下配置对相应字段进行索引,并开启全文索引。索引保存后大约1-2分钟后生效。生效后,您可针对ip、method、url、status字段进行键值查询,也可以使用关键词如‘GET’进行全文查询。
JSON日志
以下为JSON日志样例:
{
"ip": "36.111.30.4",
"methos": "GET",
"url": "/app/user/login",
"status": 200,
"other": {
"source": "app"
}
}
若配置的采集规则的分割模式为JSON模式,则可以在索引配置中定义批量添加字段如下:
注意JSON索引配置的层数最多为5层(即类似 k1.k2.k3.k4.k5),超过5层深度的索引字段将会被丢弃。