索引名中的日期公式支持
日期公式索引名解析使你能够搜索一系列时间序列索引,而不是搜索所有时间序列索引并过滤结果或维护别名,限制搜索索引的数量可以减少集群上的负载并提高执行性能。例如,如果在每天的日志中搜索错误,可以使用日期公式名称模版将搜索限制在过去两天内。
几乎所有具有index
参数的API都支持index
参数值中的日期公式。
日期公式索引名采用以下形式:
<static_name{date_math_expr{date_format|time_zone}}>
-
static_name
- 名称的静态文本部分。 -
date_math_expr
- 动态计算日期的动态日期公式表达式。 -
date_format
- 计算的日期应该呈现的可选格式,默认为YYYY.MM.dd
。 -
time_zone
- 可选时区,默认为utc
。
必须将日期公式索引名表达式包含在尖括号中,并且所有特殊字符都应该使用URI编码,例如:
# GET /<logstash-{now/d}>/_search
GET /%3Clogstash-%7Bnow%2Fd%7D%3E/_search
{
"query" : {
"match": {
"test": "data"
}
}
}
日期公式字符的百分比编码
用于日期四舍五入的特殊字符必须使用URI编码,如下所示:
< | %3C |
> | %3E |
/ | %2F |
{ | %7B |
} | %7D |
| | %7C |
+ | %2B |
: | %3A |
< | %3C |
, | %2C |
下面的示例显示了不同形式的日期公式索引名,根据当前时间utc 2024年3月22日中午,解析的最终索引名。
表达式 | 解析为 |
---|---|
<logstash-{now/d}> | logstash-2024.03.22 |
<logstash-{now/M}> | logstash-2024.03.01 |
<logstash-{now/M{YYYY.MM}}> | logstash-2024.03 |
<logstash-{now/M-1M{YYYY.MM}}> | logstash-2024.02 |
<logstash-{now/d{YYYY.MM.dd|+12:00}}> | logstash-2024.03.23 |
要在索引名称模版的静态部分中使用字符{
和}
,可以使用反斜杠\
来转义它们,例如:
<elastic\\{ON\\}-{now/M}> resolves to elastic{ON}-2024.03.01
下面的示例显示了一个搜索请求,假设索引使用默认的Logstash索引名称格式logstash-YYYY.MM.dd
,该请求将在过去三天内搜索Logstash索引。
# GET /<logstash-{now/d-2d}>,<logstash-{now/d-1d}>,<logstash-{now/d}>/_search
GET /%3Clogstash-%7Bnow%2Fd-2d%7D%3E%2C%3Clogstash-%7Bnow%2Fd-1d%7D%3E%2C%3Clogstash-%7Bnow%2Fd%7D%3E/_search
{
"query" : {
"match": {
"test": "data"
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。