日志搜索分析常见问题
仓库相关
Q:日志仓库和实时仓库的区别
A:实时仓库是实时数据进入智能日志平台的源头,无论是使用 API、传文件,还是使用专业的数据收集工具 logkit-pro 上传的实时数据,都会首先进入到实时仓库。您可以对进入实时仓库的日志进行实时滚动输出,支持字段过滤。
需要注意的是:实时仓库中的每一条数据只被保存 2 天时间,超过时间后自动删除。
除了实时仓库以外,我们提供日志仓库来存储大量的日志。您可以选择数据存储时限,允许永久存储。您可以对存储在日志仓库中的数据选择指定之间范围进行搜索分析,支持字段过滤、 Lucene 搜索语法、上下文搜索、告警、分析可视化等。
Q:日志仓库的字段类型可以修改吗
A:已经创建好的仓库的字段类型是不可以修改的,您可以添加一个字段,为其设置类型。
分词方式相关
Q:日志搜索分析中分词的含义
A:您在创建仓库的时候可以根据搜索习惯为字段设置分词方式,不同的分词方式对应着搜索的时候不同的匹配规则。
如:为某个字段设置不分词
,在搜索的时候,您必须完整的输入该字段的内容,才能搜索到包含该字段的日志。
智能日志平台提供以下几种分词方式:不分词、不分词不索引、标准分词、空白分词、path 分词、中文分词
。为字段选择合适的分词方式能帮助您灵活使用搜索功能,同时分词的使用对搜索性能也有影响。分词方式详情请阅读分词方式。
Q:修改仓库字段的分词方式生效时间
A:修改日志仓库 schema 的分词方式第三天 00:00 以后才会生效。
Q:全文索引仓库的搜索方式
A:全文索引是一种特殊的索引方式:
全文索引将所有字段拼接在一起,使用标准分词器进行分词,可以直接输入关键词进行搜索。如数据中包含
/we/are/friends
,直接输入friends
即可搜索出该数据;全文索引对每个字段选择了索引但是不分词。所以此时选择使用字段进行搜索要注意,如果字段 content 数据内容是
/we/are/friends
,那么/we/are/friends
整体被视为一个单次,我们必须输入content:"/we/are/friends"
才能搜索出结果。如果只输入content:"friends"
由于分词方式的选择是无法搜索出结果的。
数据搜索相关
Q:日志分析中如何使用正则表达式搜索?
A:全文索引的仓库分两种方式可以使用正则表达式搜索:
- 直接按照单词搜索内容,比如我们要搜索形如以 w 开头 d 结尾的关键词,我们可以直接在搜索框内输入
/w.*d/
进行匹配,这样就会找到文章内如 word, wind 等单词在日志仓库中进行搜索;
注意:
该正则表达式只局限于单词的匹配,如果有如下短语 "we are friend"
或者 "we/are/friend"
,虽然匹配 /w.*d/
,但实际上是三个独立的单词,这种情况下无法搜索命中结果。
按照字段进行搜索,比如
path:/qiniu.com\/.*\/pandora/
,这个正则表达式可以在 path 这个字段中匹配所有类似qiniu.com/a/pandora
,qiniu.com/b/pandora
这种的路径。非全文索引的仓库只支持使用字段正则表达式进行搜索(类似全文索引仓库中的方式 2),用形如
字段名:/<正则表达式>/
的表达式 进行正则表达式搜索。不过具体的效果与这个字段的分词选项有关:如果采用不分词:可以采用完全如全文索引仓库中的方式 2 进行搜索;
如果采用分词(标准分词或者中文分词等):
content:/w.*d/
会在 content 字段中找到 word, wind 等形式的单词,在日志仓库中搜索。
但同样,注意:
该正则表达式也只局限于单词的匹配,如果 content 字段有如下短语 "we are friend"
或者 "we/are/friend"
,虽然匹配 /w.*d/
,但实际上是三个独立的单词,这种情况下无法搜索命中结果。
仓库无数据排查
Q:通过工作流接收数据,经过计算后将数据导出到日志仓库,日志仓库没数据怎么回事?
A:
1.首先查看一下您的工作流是否处于正常运行状态。
2.若工作流处于已启动状态,进入工作流工作界面查看运行日志,确认计算节点和导出节点是否正常运行:
3.数据导出到日志仓库会稍有延迟,请稍作等待。
4.请检查您的数据源节点是否有数据进来。
注意: 如果您的计算和导出节点是在数据源节点接收数据之后创建的,而数据源节点没有新数据进来,那么需要在创建计算节点和导出节点时,在高级功能选择数据起始位置为最老。
Q:日志仓库通过
logkit_send_time、timestamp
时间字段搜索不出数据,但实时仓库数据在增加是怎么回事?
A:请确认您通过 logkit-pro 发送数据到智能日志平台开启了添加系统时间 logkit_send_time
、timestamp 字段。
历史数据重新发送会导致的问题
目标数据中已经有一部分发送到了日志仓库,如果重新通过 logkit-pro 采集全部历史数据发送到智能日志平台,从最老数据消费,会覆盖之前的仓库数据还是新增一份数据?
A:新增数据,会导致重复数据。