ES学习记录5——ES接口规约

8. ES API规约

8.1 多索引

 通常可以用test1test2test3这样的形式(或者用_all表示所有索引),当然它也支持通配符(如:test**test或者te*t),排除某些索引可以用-符号,比如test*,-test3(匹配所有的test开头的索引但不包括test3),所有的多索引API都支持下面的url查询字符串参数:

  • ignore_unavailable:如果指定索引不存在或者是封闭索引,这个参数可以控制这些索引是否可以被忽略,可以指定为truefalse
  • allow_no_indices:如果通配符索引表达式没有匹配到具体索引,这个参数可以控制是否失败,可以指定为truefalse,不如foo*,但是却没有以foo开头的索引,据此可以设置为失败,这个参数同样适用于_all*或者像test这样具体的某个索引,如果一个别名指向封闭索引,则此设置也适用于别名;
  • expand_wildcards:控制通配符索引表达式可以匹配到哪种具体索引,如果指定了open,则通配符表达式只能匹配到打开的索引,如果指定了closed,则通配符表达式仅能匹配到封闭的索引,它还能同时指定为openclosed两个值。

8.2 索引名对日期和数学的支持

 日期、数学索引名称解析可以让我们搜索一系列时间序列索引,而不是搜索所有时间序列索引并过滤结果或维护别名。限制搜索的索引数可以减少集群上的负载并提高执行性能。比如,在日志中搜索错误,就可以使用日期、数学名称模板将搜索限制为过去两天。几乎所有的API都有index参数,index参数可以支持日期和数学,大概的格式如下:

<static_name{date_math_expr{date_format|time_zone}}>

对上述的语句中的几个参数做如下说明:

  • static_name:名称的静态文本部分;
  • date_math_expr:动态日期、数学数学表达式(动态计算日期);
  • date_format:呈现计算日期的格式(可选),默认是YYYY.MM.dd格式;
  • time_zone:时区(可选),默认是UTC

下面是一个简单的例子:

# GET /<logstash-{
   now/d}>/_search
GET /%3Clogstash-%7Bnow%2Fd%7D%3E/_search
{
   
  "query" : {
   
    "match": {
   
      "test": "data"
    }
  }
}

【注意】

日期数学索引名称表达式必须包在尖括号中,并且所有特殊字符都应该是URI编码的,下面是具体的参照表:

特殊字符 URI编码

<

%3C

>

%3E

/

%2F

{

%7B

}

%7D

|

%7C

+

%2B

:

%3A

,

%2C

下面是对2024年3月22日中午(UTC)不同参数对应的解析结果:

表达式 解析结果

<logstash-{now/d}>

logstash-2024.03.22

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值