Elasticsearch 參考指南(索引名中的日期公式支持)

索引名中的日期公式支持

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

幾乎所有具有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"
    }
  }
}

上一篇:多索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章