4.8.searchd查询日志格式

优质
小牛编辑
140浏览
2023-12-01

searchd将全部成功执行的搜索查询都记录在查询日志文件中。以下是一个类似记录文件的例子:

[Fri Jun 29 21:17:58 2007] 0.004 sec [all/0/rel 35254 (0,20)] [lj] test
[Fri Jun 29 21:20:34 2007] 0.024 sec [all/0/rel 19886 (0,20) @channel_id] [lj] test

日志格式如下

[query-date] query-time [match-mode/filters-count/sort-mode
total-matches (offset,limit) @groupby-attr] [index-name] query

匹配模式(match-mode)可以是如下值之一

  • "all" 代表 SPH_MATCH_ALL 模式;
  • "any" 代表 SPH_MATCH_ANY 模式;
  • "phr" 代表 SPH_MATCH_PHRASE 模式;
  • "bool" 代表 SPH_MATCH_BOOLEAN 模式;
  • "ext" 代表 SPH_MATCH_EXTENDED 模式;
  • "ext2" 代表 SPH_MATCH_EXTENDED2 模式;
  • "scan" 代表使用了完整扫描模式,这可能是由于设置了SPH_MATCH_FULLSCAN模式导致的,也可能是因为查询是空的。 (参见文档匹配模式)

排序模式(sort-mode)可以取如下值之一:

  • "rel" 代表 SPH_SORT_RELEVANCE 模式;
  • "attr-" 代表 SPH_SORT_ATTR_DESC 模式;
  • "attr+" 代表 SPH_SORT_ATTR_ASC 模式;
  • "tsegs" 代表 SPH_SORT_TIME_SEGMENTS 模式;
  • "ext" 代表 SPH_SORT_EXTENDED 模式.

此外,如果searchd启动的时候带参数--iostats,那么在列出被搜索的全部索引后还会给出一块数据。.

一个查询日志项看起来就像这样:

[Fri Jun 29 21:17:58 2007] 0.004 sec [all/0/rel 35254 (0,20)] [lj]
[ios=6 kb=111.1 ms=0.5] test

多出来的这块数据是关于搜索中执行的I/O操作的信息,包括执行的I/O操作次数、从索引文件中读取数据的kb数和I/O操作占用的时间(尽管这个时间还包括一个后台处理组件所占用的,但主要是I/O时间)