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

索引名中的日期公式支持

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

幾乎全部具備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編碼,以下所示:code

< %3C
> %3E
/ %2F
{ %7B
} %7D
| %7C
+ %2B
: %3A
< %3C
, %2C

下面的示例顯示了不一樣形式的日期公式索引名,根據當前時間utc 2024年3月22日中午,解析的最終索引名。orm

表達式 解析爲
<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

# 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"
    }
  }
}

上一篇:多索引

相關文章
相關標籤/搜索