在索引名称中支持日期数字
索引名称中带日期数字使你可以搜索一系列时间段的索引,而不是搜索全部时间的索引,然后过滤结果或者维护别名。限制搜索的索引数可以减少集群的负载并且提高执行性能,例如,如果你想在日常的日志中搜索错误,你可以使用日期数字名称将索引限制为过去两天。
几乎所有具有index参数的API都支持index参数值中的日期数学。
日期数字名称索引采用以下格式:
<static_name{date_math_expr{date_format|time_zone}}>
Where:
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" } } }
日期数字字符的百分比编码
特殊的日期必须是URL编码:
< | %3C |
> | %3E |
/ | %2F |
{ | %7B |
} | %7D |
| | %7C |
+ | %2B |
: | %3A |
, | %2C |
下列的例子表示不同的日期数字索引的格式和解析的最终索引名称,给定的当前时间是2024年3月22日中午utc。
日期数字索引表达式 | 解析后 |
<logstash-{now/d}>(当前天,默认时间格式,默认时区) | logstash-2024.03.22 |
<logstash-{now/M}>(当前月,默认时间格式,默认时区) | logstash-2024.03.01 |
<logstash-{now/M{YYYY.MM}}>(当前月,指定时间格式YYYY.MM,默认时区) | logstash-2024.03 |
<logstash-{now/M-1M{YYYY.MM}}>(当前月减1个月,指定时间格式YYYY.MM,默认时区) | logstash-2024.02 |
<logstash-{now/d{YYYY.MM.dd|+12:00}}>(当前天,指定时间格式YYYY.MM.dd,指定时区+12:00) | logstash-2024.03.23 |
为了再索引模版的静态部分使用大括号{和},可以用反斜杠\转义,例如:
- <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" } } }