索引名中的日期公式支持
日期公式索引名解析使你能夠搜索一系列時間序列索引,而不是搜索所有時間序列索引並過濾結果或維護別名,限制搜索索引的數量可以減少集羣上的負載並提高執行性能。例如,如果在每天的日誌中搜索錯誤,可以使用日期公式名稱模版將搜索限制在過去兩天內。
幾乎所有具有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"
}
}
}