Elasticsearch APIs解析(一、API规范及约定)

(本API基于Elasticsearch7.7版本)
从本节开始我们借助Kibana工具编写api

1、多索引支持

大部分的API可以支持跨多个索引查阅索引信息
例如:

GET /test1,test2,test2/_search
{
  "query":{
    "query_string": {
      "fields": ["message"],
      "query": "WARN"
    }
  }
}

它还支持通配符
例如:

GET /test*/_search
{
  "query":{
    "query_string": {
      "fields": ["message"],
      "query": "WARN"
    }
  }
}

并且它还有排除的能力使用-
例如:我想查询所有的test索引并且不查询test3可以这样写

GET /test*,-test3/_search
{
  "query":{
    "query_string": {
      "fields": ["message"],
      "query": "WARN"
    }
  }
}

所有的多索引API支持以下查询参数

参数是否必填类型默认值说明
ignore_unavailable可选booleanfalse如果为true,则响应中不包括缺失或闭合的索引
allow_no_indices可选booleanfalse如果为true,则请求中不存在的索引时不会返回错误
expand_wildcards可选string控制通配符表达式可以扩展到哪种索引。当用逗号分隔时,接受多个值,如“open”、“hidden”。有效值为:allopenclosedhiddennone
ignore_throttled可选booleanfalse某些API使用

2、索引名称支持日期运算

索引按日期分片之后可以提高查询性能,例如你需要搜索每日错误日志,那么你可以通过索引名称进行日期限定。技术所有的API都支持日期运算,日期索引名称格式如下:

<static_name{date_math_expr{date_format|time_zone}}>

参数解析

参数说明
static_name任意的索引名称
date_math_expr动态的日期表达式
date_format日期格式化,默认yyyy.MM.dd
time_zone时区,默认utc

举例:查询当天索引数据

#<service-order-{now/d{yyyy-MM-dd}}>
#进行urlencode之后 变成%3cservice-order-%7bnow%2fd%7byyyy-MM-dd%7d%7d%3e
GET /%3cservice-order-%7bnow%2fd%7byyyy-MM-dd%7d%7d%3e/_search
{
  "query":{
    "query_string": {
      "fields": ["name"],
      "query": "Yao"
    }
  }
}

当然你可以自己构建更为复杂的查询,这边我就贴一个简单的例子,剩下的自己动手实验下。

3、Cron表达式

不知道这个定时器有什么用
表达式格式如下,使用的规范是 Quartz cron expressions,没错就是你熟悉的quarz

<seconds> <minutes> <hours> <day_of_month> <month> <day_of_week> [year]

既然大家都熟悉不做过多阐述,我还没用到这个功能。

4、公共选项

  • Pretty Results 使用pretty格式美化返回结果,使用?pretty=true
  • Human readable output 人类可读输出,例如时间,单位等。使用?human=true;
  • date Math 日期运算
  • Response Filtering 响应过滤器,使用?filter_path=,支持通配符,或者精确指定,即将返回结果进行过滤,用以精简返回。
  • Flat Settings 扁平化setting,GET customer/_settings?flat_settings=true 返回结果将变成如下格式,你也可以不加后缀比较下看看
{
  "customer" : {
    "settings" : {
      "index.creation_date" : "1590150410219",
      "index.number_of_replicas" : "1",
      "index.number_of_shards" : "1",
      "index.provided_name" : "customer",
      "index.uuid" : "zcyLZYomRvWTyvq2RuzhvA",
      "index.version.created" : "7050199"
    }
  }
}

  • Parameters Rest参数遵循下划线大小写约定
  • Boolean Values 所有REST API参数支持字符串的boolean值作为真正的boolean值。
  • Number Values RestApi支持数字类型使用字符串表示
  • Time units 时间单位表 d/天,h/小时,m/分钟,s/秒,ms/毫秒,micros/微秒,nanos/纳秒
  • Byte size units 字节大小单位b/Byteskb/Kilobytesmb/Megabytesgb/Gigabytestb/TerabytespbPetabytes
  • 其他单位不多介绍,国际标准
  • Fuzziness 模糊性 AUTO:[low],[high]
  • Enabling stack traces 启动堆栈跟踪 ?error_trace=true 可以获取详细报错信息
  • Request body in query string
  • Content-Type Requirements

5、基于URL访问控制

基于url访问控制可以提高访问安全性,但是对于将索引通过body传入的情况,url无法进行访问控制,你可以通过在elasticsearch.yml中设置rest.action.multi.allow_explicit_index: false来拒绝使用body指定索引。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值