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

上一篇:多索引

相关推荐