检索和分析BLS日志 AsyncSearch
更新时间:2026-06-23
- 检索和分析BLS日志。
接口限制
- 只支持index路径查询,且必须不为空,不支持其他查询参数,如timeout等。对于结构体参数,目前只支持query,aggs, fields, sort, searchAfter, highlight, size
- 查询query和聚合aggs的语法支持参考下面的列表
- 目前不支持随机翻页,因此不支持from结构体参数,只能通过searchAfter的游标获取下一页
- searchAfter下一页字段只支持数组的第一个元素,也只返回一个元素的数组,作为BLS下一页的游标
- 返回结果中没有total参数,没有_score得分,如果需要数据总数,可以通过聚合语法ValueCountAggregation获取
- 目前该函数是同步返回,不支持异步,BLS会一直查询至到超时报错
目前BLS支持的elasticsearch检索语法如下:
- MatchAllQuery
- BoolQuery
- RangeQuery
- TermQuery
- MatchPhrase
- MatchQuery
- WildcardQuery
- MultiMatchQuery
- ExistQuery
- IdsQuery
- PrefixQuery
- QueryStringQuery
- SimpleQueryStringQuery
目前BLS支持的elasticsearch分析语法如下:
- DateHistogramAggregation
- HistogramAggregation
- TermsAggregation
- SamplerAggregation
- RandomSamplerBridgeAggregation
- ValueCountAggregation
- CardinalityAggregation
- MaxAggregation
- MinAggregation
- SumAggregation
- AverageAggregation
- PercentilesAggregation
- StatsAggregation
- FilterAggregation
- FiltersAggregation
API Explorer
去调试
您可以在 API Explorer 中直接运行该接口,免去您计算签名的困扰。运行成功后,API Explorer 可以自动生成 SDK 代码示例。
请求结构
Plain Text
1POST /{name}/_async_search HTTP/1.1
2Host: xxx.bj.baidubce.com
3Authorization: authorization string
4
5{
6 "name": <name>
7}
请求头域
除公共头域外,无其他特殊头域
请求参数
| 参数名称 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| name | String | 是 | URL参数 | 索引名称,不支持模糊匹配 |
| query | Object | 是 | RequestBody参数 | 语法同普通queryDSL,语法规则参考官网 |
| aggs | Object | 否 | RequestBody参数 | 语法桶普通的Aggregations,语法规则参考官网 |
| fields | List<String> | 否 | RequestBody参数 | 返回的字段列表,默认全部字段 |
| sort | Map<String, Map<String, String>> | 否 | RequestBody参数 | 排序,目前仅支持按照@timestamp排序,默认按时间倒序 |
| searchAfter | List<String> | 否 | RequestBody参数 | 下一页游标,目前只支持数组的第一个元素,默认从指定时间的第一个开始查询 |
| highlight | Highlight | 否 | RequestBody参数 | 高亮配置 |
| size | Int | 否 | RequestBody参数 | 查询返回多少条命中的日志,默认1000 |
返回状态码
成功返回200,失败返回见错误码
返回头域
除公共头域外,无其他特殊头域
返回参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| start_time_in_millis | Int | 查询开始时间 |
| expiration_time_in_millis | Int | 查询结束时间 |
| response | Response | 响应体 |
| error | Error | 错误原因 |
| status | Int | http状态码,比如:500 |
请求示例
Plain Text
1POST /v1/xxx?clientToken=be31b98c-5e41-4838-9830-9be700de5a20 HTTP/1.1
2HOST xxx.bj.baidubce.com
3Authorization bce-auth-v1/5e5a8adf11ae475ba95f1bd38228b44f/2016-04-10T08:26:52Z/1800/host;x-bce-date/ec3c0069f9abb1e247773a62707224124b2b31b4c171133677f9042969791f02
4
5{
6 // 必须,es的查询语法,具体支持的语法参考下面的说明
7 "query": {
8 "bool": {
9 "filter": [
10 {
11 "range": {
12 "@timestamp": {
13 "format": "strict_date_optional_time",
14 "gte": "2025-08-01T04:18:44.642Z",
15 "lte": "2025-08-01T06:18:44.642Z"
16 }
17 }
18 }
19 ]
20 }
21 },
22 // 可选,es的聚合语法,具体支持的语法参考下面的说明
23 "aggs": {
24 "0": {
25 "terms": {
26 "field": "level",
27 "order": {
28 "_count": "desc"
29 },
30 "size": 3
31 },
32 "aggs": {
33 "1": {
34 "date_histogram": {
35 "field": "@timestamp",
36 "fixed_interval": "30m",
37 }
38 }
39 }
40 }
41 },
42 // 返回的字段列表,默认全部字段
43 "fields": [
44 {
45 "field": "*",
46 "include_unmapped": "true"
47 }
48 ],
49 // 可选,排序,目前仅支持按照timestamp排序,默认按时间倒序
50 "sort": [
51 {
52 "timestamp": {
53 "order": "desc",
54 }
55 }
56 ],
57 // 可选,下一页游标,目前只支持数组的第一个元素,默认从指定时间的第一个开始查询
58 "searchAfter": [
59 "CJPphaWXMxCMgNz4haWXMxj0Aw"
60 ]
61 // 高亮配置,可选
62 "highlight": {
63 // 可选,高亮的前置标识,默认@kibana-highlighted-field@
64 "pre_tags": [
65 "@kibana-highlighted-field@"
66 ],
67 // 可选,高亮的后置标识,默认@/kibana-highlighted-field@
68 "post_tags": [
69 "@/kibana-highlighted-field@"
70 ]
71 }
72 // 可选,查询返回多少条命中的日志,默认1000
73 "size": 20
74}
响应示例
Plain Text
1HTTP/1.1 200 OK
2x-bce-request-id: 946002ee-cb4f-4aad-b686-5be55df27f09
3Date: Wed, 10 Apr 2016 08:26:52 GMT
4Transfer-Encoding: chunked
5Content-Type: application/json;charset=UTF-8
6Server: BWS
7
8// 成功示例
9{
10 // 查询开始时间
11 "start_time_in_millis": 1696324475123,
12 // 查询结束时间
13 "expiration_time_in_millis": 1696929275123,
14 // 响应体
15 "response": {
16 // 查询耗时
17 "took": 132,
18 // 是否超时
19 "timed_out": false,
20 // 查询分片情况
21 "_shards": {
22 // 总共查询的分片数,目前固定为1
23 "total": 1,
24 // 成功的分片数
25 "successful": 1,
26 // 跳过的分片数
27 "skipped": 0,
28 // 失败的分片数
29 "failed": 0
30 },
31 // 查询命中结果
32 "hits": {
33 // 具体的日志记录信息,一个元素一条日志记录
34 "hits": [
35 {
36 // 项目和日志集信息 如何非default项目,使用 项目$日志集名称 的格式,defualt项目只有日志集名称
37 "_index": "project$logstore",
38 // 日志集记录的ID 由offset和timestamp组成
39 "_id": "1758596174317#28812839737868314",
40 // 得分,目前都是0
41 "_score": 0,
42 // 排序字段,用于查找下一页
43 "sort": [
44 "CJPphaWXMxCMgNz4haWXMxj0Aw"
45 ],
46 // 版本,目前都是1
47 "_version": 1
48 // 日志集字段信息
49 "fields": {
50 // 时间字段
51 "@timestamp": [
52 "2025-09-23T03:32:48.750Z"
53 ],
54 // 索引字段caller
55 "caller": [
56 "middleware/log_request.go:47"
57 ],
58 // 索引字段ip
59 "ip": [
60 "10.164.105.42"
61 ],
62 }
63 }
64 ]
65 },
66 // 日志聚合信息
67 "aggregations": {
68 // 第一个桶聚合信息
69 "0": {
70 "buckets": [
71 {
72 // 第二个桶聚合信息
73 "1": {
74 "buckets": [
75 {
76 // 该桶的总日志数
77 "doc_count": 66626,
78 // 第一个桶的名称
79 "key": 1758508200000,
80 // 字符串信息
81 "key_as_string": "2025-09-22T02:30:00.000+00:00"
82 },
83 {
84 "doc_count": 189923,
85 "key": 1758510000000,
86 "key_as_string": "2025-09-22T03:00:00.000+00:00"
87 },
88 ]
89 },
90 // 第二通桶命中的日志数
91 "doc_count": 9185770,
92 // 第二个桶的名称
93 "key": "info"
94 },
95 {
96 "1": {
97 "buckets": [
98 {
99 "doc_count": 31945,
100 "key": 1758508200000,
101 "key_as_string": "2025-09-22T02:30:00.000+00:00"
102 },
103 {
104 "doc_count": 84637,
105 "key": 1758510000000,
106 "key_as_string": "2025-09-22T03:00:00.000+00:00"
107 }
108 ]
109 },
110 "doc_count": 4093518,
111 "key": "warn"
112 }
113 ],
114 // 错误文档数
115 "doc_count_error_upper_bound": 0,
116 // 其他文档数
117 "sum_other_doc_count": 565
118 }
119 }
120 }
121}
122
123// 异常示例
124{
125 "error": {
126 "root_cause": [
127 {
128 "type": "status_exception",
129 "reason": "exist stat aggregations syntax not support",
130 }
131 ],
132 "caused_by": {
133 "type": "search_phase_execution_exception",
134 "reason": "all shards failed"
135 "caused_by": {
136 "type": "parse_exception",
137 "reason": "exist stat aggregations syntax not support"
138 }
139 }
140 "type": "status_exception",
141 "reason": "error while executing search"
142 },
143 "status": 500
144}
评价此篇文章
