(11)elasticsearch常用查询,REST API的基本约定

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

参数释义:

static_name

是名称的静态文本部分

date_math_expr

是动态日期数学表达式,可动态计算日期

date_format

是一种可选格式,应以这种格式呈现计算出的日期。默认为yyyy.MM.dd。格式应与Java时间https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html兼容

time_zone

是可选的时区。默认为utc

请注意空格中小写与大写字母的用法date_format

例如:mm表示小时,而MM表示月份。

类似地,结合表示范围内hh的小时,而表示24小时范围内的小时。1-12AM/PMHH0-23

日期数学表达式与语言环境无关。因此,除了公历以外,无法使用其他日历。

 

您必须将日期数学索引名称表达式括在尖括号内,并且所有特殊字符均应进行URI编码。例如:

# PUT /<my-index-{now/d}>
PUT /%3Cmy-index-%7Bnow%2Fd%7D%3E

 

(2.2)日期数学字符的百分比编码

用于日期舍入的特殊字符必须使用URI编码,如下所示

  

<

%3C

>

%3E

/

%2F

{

%7B

}

%7D

|

%7C

+

%2B

:

%3A

,

%2C

 

 

以下示例显示了不同形式的日期数学索引名称,以及在当前时间为2024年3月22日正午utc时,它们解析为的最终索引名称。

表达 解析为

<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

要使用字符{ 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"
    }
  }
}

 

上一篇:elk安装配置-备忘


下一篇:极速精简 Go 版 Logstash