百度日志服务BLS

    检索语法

    检索方式

    为字段配置索引之后,可以指定字段名称和字段内容进行查询。

    支持的查询类型:

    • 普通查询:指定字段和关键字,所指定字段包含该关键字的日志会作为结果返回。例如 method:GET and status=200 表示查询 method 是 GET 并且 status 等于 200 的日志。
    • 短语查询:如果需要查询的关键字中包含检索语法运算符或空格,可以将关键字用双引号("")包裹,表示将双引号中的内容作为多个关键字查询。例如 msg:"service not avaliable" 表示 msg 查询包含关键字 service、not 和 avaliable 的日志,等价于查询 msg:service and msg:"not" and msg:avaliable。
    • 模糊查询:在关键字中的中间或末尾加上模糊查询关键字,即 * 和 ?,日志服务会在所有日志中为您查询符合条件的日志。例如 http_user_agent:andr? 表示在所有日志中查找 http_user_agent 字段包含以 andr 开头的词的日志。

      限制说明:

      • 查询时必须指定前缀,即 * 和 ? 不能出现在词的开头。
      • 指定的词越精确,查询结果越精确。

    字段对应的查询类型

    • 对于 text 类型的字段,可以进行普通查询、短语查询、模糊查询。
    • 对于 float 和 long 类型的字段,可以指定数值范围进行查询。

    例如,查询语句为 method:GET and status >= 500,表示查询 method 字段值是 GET,且 status 字段值大于等于 500 的日志。

    运算符


    运算符 说明
    and 双目运算符。格式为 query1 and query2,表示 query1 和 query2 查询结果的交集。如果多个单词间没有语法关键词,默认是 and 的关系。
    or 双目运算符。格式为 query1 or query2,表示 query1 和 query2 查询结果的并集。
    not 双目运算符。格式为 query1 not query2,那么表示符合 query1 但不符合 query2 的结果,即 query1 - query2。如果省略 query1 ,只有 not query2 ,表示从全部日志中选取不包含 query2 的结果。
    (,) 括号用于把一个或多个子查询合并成一个查询条件,用于提高括号内查询条件的优先级。
    : 用于 key-value 对的查询。key:term 构成一个 key-value 对。表示在 key 的索引上执行 term 查询。如果 key 或者 value 内有空格( )、冒号(:)等保留字符,需要用双引号 "" 把整个 key 或者 value 包裹起来。左右引号内部的任何一个 term 都会被查询,而不会当成语法关键词。
    * 模糊查询关键字,用于替代 0 个或多个字符,例如:andr*,会返回 andr 开头的所有命中词。
    ? 模糊查询关键字,用于替代一个字符,例如 andr?id,会返回以 andr 开头,以 id 结尾,并且中间还有一个字符的所有命中的词。
    " 转义符号,表示把一个关键词转换成普通的查询字符。左右引号内部的任何一个 term 都会被查询,而不会当成语法关键词。引号内的模糊查询关键字 (*,?) 会被当做字符常量处理。
    \ 转义符。用于转义引号,转义后的引号表示符号本身,不会当成转义字符,例如 "\""。
    > 查询某个字段下大于某个数值的日志,例如 status > 500。
    >= 查询某个字段下大于或等于某个数值的日志,例如 status >= 500。
    < 查询某个字段下小于某个数值的日志,例如 status < 400。
    <= 查询某个字段下小于或等于某个数值的日志,例如 status <= 400。
    = 查询某个字段下等于某个数值的日志,例如 status = 404。
    in 查询某个字段处于某个范围内的日志,使用中括号表示闭区间,使用小括号表示开区间,括号中间使用两个数字,数字中间为若干个空格。例如 status in [500 600] 或 status in [200 400)。
    | 管道运算符,用于分隔检索语法和 SQL 语法,表示在检索的基础上进行更多计算,例如 query1 | select count(*)。
    上一篇
    SQL语法
    下一篇
    日志集