contact@yottabyte.cn
400-085-0159
调查问卷
J

API

统计接口

统计接口即将在新版API中废弃,请使用功能强大和接口与返回结果格式都更友好的SPL接口代替!接口兼容问题,暂时请咨询售后支持人员解答。

路径:/statistic

概述

在日志易API中,统计功能可理解为是对搜索结果数据集的分组操作和运算操作的组合。

分组操作可以再嵌套多个操作:

接口结构

统计接口使用HTTP POST接口。

接口具体参数请看下文手册,先说明接口的结构

{ // 注1
  "query" : { // 注2
    "<action_name>" : { // 注3
      "<action_type>" : { // 注4
        <action_body> // 注5
      }
    },
    "<action_name2>" : { // 注6
      "<can_be_nested_action_type>" : { // 注7
        <action_body>
      },
    "group": { // 注8
      "<action_name3>" : {
        "<action_type>": {
           <action_body>
         }
      },
      "<action_name4>": { // 注6
        "<action_type>": {
          <action_body>
        }
      }
      // 更多action或更多group
    }
  // 更多action
  }
}

依上述注释数字说明:

  1. HTTP的body部分为JSON格式,不可含有换行和注释,用户需要自行compact请求内容为单行文本。
  2. 顶级的query元素是关键字,请求内容都应在query元素内。
  3. action_name是用户自定义的操作名。每个操作必须包含在名字指定的元素内。在API返回结果中将使用action_name来使用户能区分不同的统计结果。名字的命名规范为:
    • 只能包含小写字母数字和下划线
    • 必须用小写字母开头
    • 不能使用API接口已经定义的操作类型和关键字,如terms,groupfieldorderfromtoperiod
  4. action_type是API接口定义的操作类型,比如分组操作有terms,timelinehistogram等,计算操作有statscardinality等。具体含义下文手册将一一说明。
  5. action_body根据每个action都有不同,具体内容下文手册将一一说明。
  6. action_name2action_name4显示了在同一级数据分组内的多个操作如何并列。与所有JSON一样,注意两者不要使用同样的名字即可。
  7. 当我们想要有操作之间的嵌套,则必须使用分组操作类型,如termstimeline
  8. group是关键字,当操作之间需要嵌套时候必须使用group元素标示,以与注6所示意的同级内的并列多个操作相区分。
    • 一个action_name内只能有一个group元素。
    • 只有分组操作才能包含group元素。

返回结果结构:

{
  "result": // true成功,false失败
  "total": // 搜索返回的事件总数
  "data": { // 统计结果都在data中
    "<action_name>": {
       <action_result>
    },
    "<action_name2>": {
      <action2_result>,
      "<action_name3>": {
        <action3_result>
      },
      "<action_name4>": {
        <action4_result>
      }
    }
  }
}

返回结果结构说明:

URI

参数

参数含义合法值默认值
source_group日志分组all和用户定义的日志分组名all
time_range搜索的时间范围
  • 以逗号分隔的两个以毫秒计的unix时间戳
  • 第二个值可用字符串now表示当前时间
  • 第一个值可用负号加数字加d或m表示距当前时间几天或几分钟,如-1d,-1m
-3d,now
query搜索语句日志易的搜索语句支持全文检索、逻辑运算、正则表达式等:*
filter_field使用字段过滤使用字符串|-$!|分隔的field名和值。每个field的name和value之间用冒号分隔,value用双引号括起来;包括tag、 appname、 logtype也可通过此参数过滤:样例如logtype:"apache"|-$!|appache.status:"200"

注意事项

1.一些统计算法采用了近似算法(approximation algorithm),当前有termscardinalitypercentilespercentile_ranks

2.当数据较多时多级分组操作很耗费系统资源,尤其是对非数值型的terms分组操作,建议可以通过在URI中指定field_filter的方式,做多次API请求来获得。