检索和分析BLS日志 AsyncSearch
更新时间:2025-09-25
描述
检索和分析BLS日志
使用说明
- 目前该接口为同步请求接口,不支持异步请求
请求
- 请求语法
Text
1POST /<name>/_async_search HTTP/1.1
2Host: <Endpoint>
3Authorization: <Authorization String>
- 请求头域
除公共请求头域外,无其它特殊头域。
- 请求参数
参数名称 | 类型 | 是否必须 | 参数位置 | 描述 |
---|---|---|---|---|
name | String | Yes | Path | 索引名称,不支持模糊匹配 |
query | Object | Yes | RequestBody | 语法同普通queryDSL,语法规则参考官网 |
aggs | Object | No | RequestBody | 语法桶普通的Aggregations,语法规则参考官网 |
fields | List<String> | No | RequestBody | 返回的字段列表,默认全部字段 |
sort | Map<String, Map<String, String>> | No | RequestBody | 排序,目前仅支持按照@timestamp排序,默认按时间倒序 |
searchAfter | List<String> | No | RequestBody | 下一页游标,目前只支持数组的第一个元素,默认从指定时间的第一个开始查询 |
highlight | Highlight | No | RequestBody | 高亮配置 |
size | Int | No | RequestBody | 查询返回多少条命中的日志,默认1000 |
其中 Highlight 对象的元素结构如下:
参数名称 | 类型 | 是否必须 | 参数位置 | 描述 |
---|---|---|---|---|
pre_tags | List<String> | No | RequestBody | 高亮的前置标识,默认@kibana-highlighted-field@ |
post_tags | List<String> | No | RequestBody | 高亮的后置标识,默认@/kibana-highlighted-field@ |
目前BLS支持的检索语法如下:
- BoolQuery
- RangeQuery
- TermQuery
- MatchPhrase
- MatchQuery
- WildcardQuery
- MultiMatchQuery
- ExistQuery
- IdsQuery
- PrefixQuery
- QueryStringQuery
- SimpleQueryStringQuery
目前BLS支持的分析语法如下:
- DateHistogram
- TermsAggregation
- ValueCountAggregation
- CardinalityAggregation
- MaxAggregation
- MinAggregation
- SumAggregation
- AverageAggregation
- HistogramAggregation
- SamplerAggregation
- RandomSamplerBridgeAggregation
- FilterAggregation
- FiltersAggregation
成功响应
- 响应头域
除公共响应头域外,无其它特殊头域。
- 响应参数
字段 | 类型 | 描述 |
---|---|---|
start_time_in_millis | Int | 查询开始时间 |
expiration_time_in_millis | Int | 查询结束时间 |
response | Response | 响应体 |
上表中的 Response 对象的元素结构如下:
字段 | 类型 | 描述 |
---|---|---|
took | Int | 查询耗时 |
timed_out | Boolean | 是否超时 |
_shards | Shard | 查询分片情况 |
hits | Map<String, List |
命中的文档 |
aggregations | Aggregations | 聚合结果,参考官网 |
其中 Shard 对象的元素结构如下:
字段 | 类型 | 描述 |
---|---|---|
total | Int | 总共查询的分片数,目前固定为1 |
successful | Int | 成功的分片数 |
skipped | Int | 跳过的分片数 |
failed | Int | 失败的分片数 |
其中 Hit 对象的元素结构如下:
字段 | 类型 | 描述 |
---|---|---|
_index | String | 项目和日志集信息 如何非default项目,使用 项目$日志集名称 的格式,defualt项目只有日志集名称 |
_id | String | 日志集记录的ID 由offset和timestamp组成 |
_score | Double | 得分,目前都是0 |
sort | List<String> | 排序字段,用于查找下一页, 目前都是单个元素 |
_version | Int | 版本,目前都是1 |
fields | Map<String, []Any> | 日志集字段信息 |
_version | Int | 版本,目前都是1 |
异常响应
- 响应头域
除公共响应头域外,无其它特殊头域。
- 响应参数
字段 | 类型 | 描述 |
---|---|---|
error | Error | 错误原因 |
status | Int | http状态码,比如:500 |
上表中的 Error 对象的元素结构如下:
字段 | 类型 | 描述 |
---|---|---|
root_cause | List<Error> | 根原因 |
caused_by | Error | 具体的原因 |
type | String | 错误类型 |
reason | String | 错误原因 |
示例
- 请求示例
Text
1POST /my-index/_async_search HTTP/1.1
2Host: bls-log.bj.baidubce.com
3Authorization:bce-auth-v1/18717522d39411e9b721df098b0b908c/2019-09-10T07:00:20Z/1800/content-type;host;x-bce-date;x-bce-request-id/6a7cb6c9ac7ec156c805e55e7d0bcfc443b47feee97cf099c1c0d93a0b4c8304
4Content-Type: application/json; charset=utf-8
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}
- 响应示例
Text
1HTTP/1.1 204
2Content-Type: application/json; charset=utf-8
3X-Bce-Request-Id: 2eeba101-4cc7-4cfe-b5ac-a3be8d060e33
4Date: Fri, 10 Apr 2020 04:42:37 GMT
5
6// 成功示例
7{
8 // 查询开始时间
9 "start_time_in_millis": 1696324475123,
10 // 查询结束时间
11 "expiration_time_in_millis": 1696929275123,
12 // 响应体
13 "response": {
14 // 查询耗时
15 "took": 132,
16 // 是否超时
17 "timed_out": false,
18 // 查询分片情况
19 "_shards": {
20 // 总共查询的分片数,目前固定为1
21 "total": 1,
22 // 成功的分片数
23 "successful": 1,
24 // 跳过的分片数
25 "skipped": 0,
26 // 失败的分片数
27 "failed": 0
28 },
29 // 查询命中结果
30 "hits": {
31 // 具体的日志记录信息,一个元素一条日志记录
32 "hits": [
33 {
34 // 项目和日志集信息 如何非default项目,使用 项目$日志集名称 的格式,defualt项目只有日志集名称
35 "_index": "project$logstore",
36 // 日志集记录的ID 由offset和timestamp组成
37 "_id": "1758596174317#28812839737868314",
38 // 得分,目前都是0
39 "_score": 0,
40 // 排序字段,用于查找下一页
41 "sort": [
42 "CJPphaWXMxCMgNz4haWXMxj0Aw"
43 ],
44 // 版本,目前都是1
45 "_version": 1
46 // 日志集字段信息
47 "fields": {
48 // 时间字段
49 "@timestamp": [
50 "2025-09-23T03:32:48.750Z"
51 ],
52 // 索引字段caller
53 "caller": [
54 "middleware/log_request.go:47"
55 ],
56 // 索引字段ip
57 "ip": [
58 "10.164.105.42"
59 ],
60 }
61 }
62 ]
63 },
64 // 日志聚合信息
65 "aggregations": {
66 // 第一个桶聚合信息
67 "0": {
68 "buckets": [
69 {
70 // 第二个桶聚合信息
71 "1": {
72 "buckets": [
73 {
74 // 该桶的总日志数
75 "doc_count": 66626,
76 // 第一个桶的名称
77 "key": 1758508200000,
78 // 字符串信息
79 "key_as_string": "2025-09-22T02:30:00.000+00:00"
80 },
81 {
82 "doc_count": 189923,
83 "key": 1758510000000,
84 "key_as_string": "2025-09-22T03:00:00.000+00:00"
85 },
86 ]
87 },
88 // 第二通桶命中的日志数
89 "doc_count": 9185770,
90 // 第二个桶的名称
91 "key": "info"
92 },
93 {
94 "1": {
95 "buckets": [
96 {
97 "doc_count": 31945,
98 "key": 1758508200000,
99 "key_as_string": "2025-09-22T02:30:00.000+00:00"
100 },
101 {
102 "doc_count": 84637,
103 "key": 1758510000000,
104 "key_as_string": "2025-09-22T03:00:00.000+00:00"
105 }
106 ]
107 },
108 "doc_count": 4093518,
109 "key": "warn"
110 }
111 ],
112 // 错误文档数
113 "doc_count_error_upper_bound": 0,
114 // 其他文档数
115 "sum_other_doc_count": 565
116 }
117 }
118 }
119}
120
121// 异常实例
122{
123 "error": {
124 "root_cause": [
125 {
126 "type": "status_exception",
127 "reason": "exist stat aggregations syntax not support",
128 }
129 ],
130 "caused_by": {
131 "type": "search_phase_execution_exception",
132 "reason": "all shards failed"
133 "caused_by": {
134 "type": "parse_exception",
135 "reason": "exist stat aggregations syntax not support"
136 }
137 }
138 "type": "status_exception",
139 "reason": "error while executing search"
140 },
141 "status": 500
142}