如需对采集到Logstore中的日志进行查询和分析,您必须首先创建索引。本文为您介绍日志服务索引概念、索引类型、配置索引示例和步骤。
为什么需要创建索引
通常我们使用关键词,从原始日志内容中检索想要的内容,例如检索出包含Chrome的如下日志内容:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2
如果不进行切分,该日志文本会作为一个整体,不能和关键词Chrome完全对应,因此不会被日志服务Project检索到。为了便于检索,需要将日志切分成独立、可搜索的词。日志切分由分词符实现,这些符号决定了日志文本内容被切分的位置。以该日志为例,使用分词符\n\t\r,;[]{}()&^*#@~=<>/\?:'"
进行分割,得到的词是Mozilla
、5.0
、Windows
、NT
、6.1
、AppleWebKit
、537.2
、KHTML
、like
、Gecko
、Chrome
、192.0.2.0
、Safari
、537.2
。
日志服务Project基于这些切分出的关键词建立索引。创建索引后,您才能对日志数据进行查询和分析。
索引类型
全文索引
重要分词符不支持中文,开启包含中文选项,日志服务会自动按照中文分词。
如果只配置全文索引,则只能使用查询功能。更多信息,请参见查询语法。
根据分词符直接将整个日志切分成多个text类型的词语。可以通过关键词进行查询,例如查询语句:
Chrome or Safari
,查询包括Chrome
或Safari
的日志。更多信息,请参见查询语法。字段索引
说明在采集日志或投递数据到其他云产品时,日志服务会将日志来源、时间戳等信息以Key-Value对的形式添加到日志中。这些字段是日志服务的保留字段。
先将日志根据字段名称(KEY)进行区分,然后在字段内使用分词符进行分割,字段类型包括
text
、long
、double
和json
。text
类型的字段,可以使用全文查询语句、字段查询语句、分析语句(SELECT)。如果未开启全文索引,全文查询语句是从所有text类型的字段中查询结果。如果已开启全文索引,全文查询语句是从所有日志中查询结果。long
、double
类型的字段,可以使用字段查询语句、分析语句(SELECT)进行查询和分析。
创建字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询,也可以使用SELECT语句。更多信息,请参见字段查询语法和查询与分析概述。
创建索引
不同的索引配置,会产生不同的查询和分析结果,请根据您的需求,合理创建索引。如果您同时创建了全文索引和字段索引,以字段索引的配置为准。
配置索引只对新增日志生效,对于已有日志需要重建索引,配置索引后需要大约一分钟生效。
登录日志服务控制台,在Project列表,单击打开目标Project。
在左侧导航栏单击日志存储,然后在打开的日志库页签中,单击目标Logstore。
在Logstore的查询和分析页面,单击开启索引。
说明开启后等待1min左右即可查询最新数据。
关闭自动更新索引
当Logstore为云产品专属Logstore或内部Logstore时,默认打开索引自动更新开关,后续如有版本更新时可以升级到内置索引最新版本。如果需要创建索引,请在查询分析面板中,关闭自动更新开关。
警告删除云产品专属Logstore的索引会影响相关报表、告警等功能的使用。
配置索引
在查询分析页面,打开全文索引开关,并单击自动生成索引。日志服务会根据采集时预览数据中的第一条内容,自动生成字段索引。单击页面下方的
+
也可手动创建字段索引。重要如果需要对字段进行分析(SELECT语句),必须创建字段索引,字段索引的配置项优先级高于全文索引的配置项。
日志服务已为部分保留字段创建索引。更多信息,请参见保留字段。
其中
__topic__
和__source__
的索引分词符为空,查询这两个字段时,关键字必须完全匹配。__tag__
为前缀的字段不支持全文索引。您需要创建字段索引后,才能执行查询和分析操作,例如*| select "__tag__:__receive_time__"
。日志中存在同名字段(例如都为request_time)时,日志服务会将其中一个字段名显示为request_time_0,底层存储的字段名仍为request_time。因此在创建索引、查询、分析、投递、加工时,只能使用原始字段名request_time。
全文索引配置项说明如下所示:
字段索引配置项说明如下所示:
索引配置示例
日志内容中有
request_time
字段,执行字段查询语句request_time>100
。只建立全文索引,返回同时包含
request_time
、>
(非分词符)、100
这三个词的日志。只建立double、long类型的字段索引,返回结果是
request_time
大于100的日志。建立全文索引和double、long类型的字段索引,
request_time
的全文索引失效,返回结果是request_time
大于100的日志。
日志内容中有
request_time
字段,执行全文查询语句request_time
。只建立double、long类型的字段索引,无法查询到相关日志。
只建立全文索引,从所有日志文本中查询包括
request_time
的日志。只建立text类型的字段索引,从字段索引是text类型的字段中查询包括
request_time
的日志。
日志内容中有
status
字段,执行分析语句* | SELECT status, count(*) AS PV GROUP BY status
。只建立全文索引,无法查询到相关日志。
为
status
建立字段索引,返回结果是不同的状态码及对应的PV总数。
索引流量
全文索引
所有字段名和字段值都将作为text类型存储,即字段名和字段值都被计入索引流量。
字段索引
不同数据类型的字段的索引流量计算方式不同。
text类型:字段名和字段值都被计入索引流量中。
long类型和double类型:字段名不计入索引流量中,每个字段值所占的索引流量统一为8字节。
例如对
status
字段设置了索引(long类型),字段值为200
,则字符串status
不会被计入在索引流量中,200
的索引流量统一为8字节。JSON类型:字段名和字段值都被计入到索引流量中,包括未被创建索引的子节点。更多信息,请参见如何计算JSON类型字段的索引流量。
如果未对子节点设置索引,则其索引流量按照text类型进行计算。
如果对子节点设置了索引,则其索引流量按照其子节点数据类型(text类型、long类型或double类型)进行计算。
计费说明
按写入数据量计费的logstore
创建的索引会占用存储空间,存储类型请参见管理智能存储分层。
重建索引不产生费用。
索引流量计费请参见按写入数据量计费模式计费项。
按使用功能计费的logstore
创建的索引会占用存储空间,存储类型请参见管理智能存储分层。
创建索引会产生流量,索引流量计费请参见按使用功能计费模式计费项中的索引流量-日志索引和索引流量-日志索引-查询型。降低索引流量的建议,请参见如何降低索引流量费用?。
重建索引会产生费用。计费项、计费价格和创建索引相同。
后续步骤
查询和分析日志
查询和分析的示例,请参见:
设置字段的最大长度
分析时,日志服务默认支持的字段值最大长度为
2048
字节,即2KB。如果您需要修改字段值的最大长度,可设置统计字段(text)最大长度,取值范围为64~16384字节。重要当单个字段值长度超过最大长度时,超出部分被截断,不参与分析。
日志聚类
打开日志聚类开关,日志服务在采集文本日志时会自动聚合相似度高的日志,提取共同的日志模式,帮助您快速掌握日志整体情况。更多信息,请参见日志聚类。
关闭索引
关闭索引后,历史索引的存储空间将在当前Logstore的数据保存时间到期后,自动被清除。
相关文档
优化查询的方法,请参见提高查询分析日志速度的方法。
查询和分析JSON类型的网站日志,请参见查询和分析JSON日志。
使用API管理索引,请参见: