elasticsearch02-通用API规范

通用API规范

在介绍下面的curd等api之前,先介绍一些通用的API规范。

多index 搜索通用参数

大多数API都支持跨index去进行查询等操作,例如使用:GET /test1,test2这种列举的方式;也可以用通配符的方式GET /test*的方式;通配符还支持排除的方式GET /test*,-test2.

当使用跨index的时候,有如下几个默认的参数:

  1. ignore_unavailable. 可以选择true或false,去决定是否忽略那些不可用的index,不可用的index是指那些不存在或关闭了的。
  2. allow_no_indices.可以选择true或false,去决定根据索引通配符表达式去搜索,如果no one index match,那么会根据allow_no_indices选择是否为true,确定结果。
  3. expand_wildcards.可以选择open,close,none或all。open会只在指定的index中搜索,close不在指定的index中搜索,all所有index,none没有index搜索。

Note:这几个参数只适合多个index一起搜索,单index不能用。

date math 可用于index的名称匹配

date math是es提供的时间搜索方式,也可以用于匹配index的名称(使用场景可能就是查看一段时间内每天的日志),通过特定的表达式去搜索,而不是查完过滤结果,效率会高很多。使用的方式如下:

<static_name{date_math_expr{date_format|time_zone}}>

举个例子,假设当前时间是 2024322 日中午 utc

<logstash-{now/M{YYYY.MM}}> 其结果就是 logstash-2024.03

名称含义备注
Static_nameindex的名称对应的是logstash-
Date_math_expr时间表达式对应的是now/M
date_format日期的格式默认是YYYY.MM.dd,可不写,对应的是YYYY.MM
time_zone时区默认的是utc,可不写

通过上门的例子应该就能很清楚的知道date math在匹配index时候的用法了,然后需要注意一点的是,符号例如< { / 等需要进行URI转义,看下表:

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

常用参数选项

下面列出的这些常用参数/选项可以用于所有的API。

pretty

就是格式化respone,就在后面加上pretty即可。

适合人读的结果输出

参数human=true/false。默认false。使用之后结果更方便读。例如:

"exists_time_in_millis": 3600000 or "size_in_bytes": 1024

当设置参数 human=true时,结果为:

"exists_time": "1h"` or `"size": "1kb"

Date Math

搜索两个时间内的数据,通常的做法可能time>2019&time<2020这种,es提供了更方便的Date Math(笔者理解为时间计算)的方式。Date Math以一个锚点开始,然后在这之后可以跟一个或多个特定的表达式。

锚点有两种:1. 当前时间 now ;2. 任意时间+|| 例如 2019-01-01||

特定的表达式一般一下三种,当然下面的1可以替换为别的数字;

  • +1h: 增加一个小时
  • -1d: 减去一个小时
  • /d: 向下到最近的日期(也就是零点)

然后支持的时间格式包括常用的Y,M,h等等,看下表:

符号含义
yYears
MMonths
wWeeks
dDays
hHours
HHours
mMinutes
sSeconds

然后借用官方的例子,假定现在的日期是2001-01-01 12:00:00

表达式结果
now+1h2001-01-01 13:00:00
now-1h2001-01-01 11:00:00
now-1h/d2001-01-01 00:00:00
2001.02.01\|\|+1M/d2001-03-01 00:00:00

响应过滤

通过参数filter_path来过滤响应的参数,可以返回指定的响应结果。例如:

`GET ``/_search``?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score`

返回结果为

{
  "took" : 3,
  "hits" : {
    "hits" : [
      {
        "_id" : "0",
        "_score" : 1.6375021
      }
    ]
  }
}

然后也可以使用 *(一级都符合)**(多级都符合) -(排除某个结果)这种来过滤, 排除和非排除可以一起使用(这里不难但比较啰嗦,具体可以看官方文档)。

平面化

通过参数flat_settings设置结果是平面化(true),还是json(false)的格式显示,默认是false。


其他还有一些如 时间单位、距离单位、文件大小单位 boolean值等,一般理解就可以,具体的可以看官方文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值