【1】多个资源请求
(1.1)基本查多个索引
您可以使用逗号分隔的列表对多个资源
test1,test2,test3
(1.2)通配符,like 之类的模糊查询
还可以使用通配符 * ,如:
test*或*test或te*t或*test*。
您可以使用以下-字符排除目标:test*,-test3。
(1.3)别名引起的问题
索引别名在通配符表达式之后解析。这可能会导致针对排除的别名的请求。
例如,如果test3
是索引 abc 的别名,则该模式test*,-test3
仍将定位到的索引test3
。
为了避免这种情况,请排除别名的具体索引。如:test*,-abc
(1.4)多目标API的字符串参数
ignore_unavailable :(可选,布尔值)如果为true
,则响应中不包含缺少或闭合的索引。默认为false
allow_no_indices:(可选,布尔值)如果true
,请求并不如果通配符表达式或者返回一个错误_all
值仅检索丢失或封闭的索引。此参数还适用于指向别名缺失或封闭索引的索引别名。
expand_wildcards:
(可选,字符串)控制通配符表达式可以扩展到的索引类型。如用逗号分隔,可以接受多个值open,hidden
。有效值为:
all:展开以打开和关闭索引,包括隐藏索引。 open:仅展开以打开索引。 closed:仅扩展到封闭索引。 hidden:通配符的扩展将包括隐藏的索引。必须与之合并open,closed或两者兼而有之。 none:不接受通配符表达式。
ignore_throttled :(可选,布尔值)如果为true
,冻结时将忽略具体的索引,扩展的索引或别名索引。默认为true
。
【2】索引名称中对日期的数学支持
(2.1)作用
日期数学索引名称解析使您可以搜索一系列时间序列索引,而不必搜索所有时间序列索引并过滤结果或维护别名。
限制搜索索引的数量可以减少群集上的负载并提高执行性能。
例如,如果您要在日常日志中搜索错误,则可以使用日期数学名称模板将搜索范围限制为过去两天。
几乎所有具有index
参数的API都在index
参数值中支持日期数学。
日期数学索引名称采用以下形式:
<static_name{date_math_expr{date_format|time_zone}}>
参数释义:
|
是名称的静态文本部分 |
|
是动态日期数学表达式,可动态计算日期 |
|
是一种可选格式,应以这种格式呈现计算出的日期。默认为 |
|
是可选的时区。默认为 |
请注意空格中小写与大写字母的用法date_format
。
例如:mm
表示小时,而MM
表示月份。
类似地,结合表示范围内hh
的小时,而表示24小时范围内的小时。1-12
AM/PM
HH
0-23
日期数学表达式与语言环境无关。因此,除了公历以外,无法使用其他日历。
您必须将日期数学索引名称表达式括在尖括号内,并且所有特殊字符均应进行URI编码。例如:
# PUT /<my-index-{now/d}> PUT /%3Cmy-index-%7Bnow%2Fd%7D%3E
(2.2)日期数学字符的百分比编码
用于日期舍入的特殊字符必须使用URI编码,如下所示
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
以下示例显示了不同形式的日期数学索引名称,以及在当前时间为2024年3月22日正午utc时,它们解析为的最终索引名称。
表达 | 解析为 |
---|---|
|
|
|
|
|
|
|
|
|
|
要使用字符{ and
}
在索引名称模板的静态部分中,请使用反斜杠对其进行转义\
,例如:
<elastic\{ON\}-{now/M}> 解析为 elastic{ON}-2024.03.01
(2.3)案例
以下示例显示了一个搜索请求,该搜索请求在过去三天中搜索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" } } }