Date math 索引名称解析可以让您搜索一系列 time-series indices(时间序列索引),而不是搜索所有时间序列索引并过滤结果或维护 aliases(别名)。限制搜索的索引数量减少了集群上的集群上的负载,并提高了执行性能。例如,如果您在日常日志中 searching for errors(搜索错误 ),则可以使用 date math name 模板将搜索限制为过去两天。
几乎所有的具有索引参数的 API 都支持在 index parameter value(索引参数值)中包含 date math 。
date math 索引名称采用以下形式 :
<static_name{date_math_expr{date_format|time_zone}}>
上述的说明 :
位置 | 说明 |
---|---|
static_name | 是名称的 static text( 静态文本)部分 |
date_math_expr | 是动态计算日期的动态 date math 表达式 |
date_format | 是计算日期应呈现的可选格式。默认是 YYYY.MM.dd |
time_zone | 是可选的时区。默认为 utc 。 |
你必须将 date math 索引名称表达式包含在尖括号中,并且所有的特殊字符都应进行 URI 编码。例如 :
# GET /<logstash-{now/d}>/_search
curl -XGET 'localhost:9200/%3Clogstash-%7Bnow%2Fd%7D%3E/_search?pretty' -H 'Content-Type: application/json' -d'
{
"query" : {
"match": {
"test": "data"
}
}
}
'
Note(注意):
用于 date 舍入的特殊字符必须按照如下 URI 编码 :
字符 | 编码 |
---|---|
< |
%3C |
> | %3E |
/ | %2F |
{ | %7B |
} | %7D |
| | %7C |
+ | %2B |
: | %3A |
, |
%2C |
以下示例显示了不同形式的 date math index names(日期数学索引名称)和它们解析的 final index names(最终索引名称),它们给定的当前时间是 2024 年 3 月 22 日中午 utc。
表达式 | 解析结果 |
---|---|
<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 |
为了在索引名称模板的 static part(静态部分)中使用字符 { 和 } ,使用* * 对其进行转义,例如 :
<elastic\\{ON\\}-{now/M}> resolves to elastic{ON}-2024.03.01
下面的示例显示了一个搜索请求,搜索 LogStash 索引在过去的三天里,假设索引使用默认的 LogStash 索引名称格式, logstash-YYYY.MM.dd 。
# 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"
}
}
}