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 | 可选 | boolean | false | 如果为true,则响应中不包括缺失或闭合的索引 |
allow_no_indices | 可选 | boolean | false | 如果为true,则请求中不存在的索引时不会返回错误 |
expand_wildcards | 可选 | string | … |
控制通配符表达式可以扩展到哪种索引。当用逗号分隔时,接受多个值,如“open”、“hidden”。有效值为:all 、open 、closed 、hidden 、none
|
ignore_throttled | 可选 | boolean | false | 某些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/Bytes
,kb/Kilobytes
,mb/Megabytes
,gb/Gigabytes
,tb/Terabytes
,pbPetabytes
- 其他单位不多介绍,国际标准
- 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指定索引。
Elasticsearch APIs解析(一、API规范及约定)相关推荐
- RESTful API 规范
REST 和 RESTfulAPI REST是REpresentational State Transfer表述性状态转移 的首字母缩写,是一种基于超媒体构建分布式系统的架构风格.与其他架构风格一样, ...
- php restful规范,RESTFul API规范 详细指南
RESTFul规范 RESTFul是一种HTTP API接口规范,只要满足的RESTFul规范,即可称为RESTFul API. 既然是接口,我们先来了解一下,他和传统的API接口有何不同吧. 本文以 ...
- java 解析gson_使用Java和Google GSON解析ESPN API
java 解析gson 在我的第一篇文章中,我将解释如何解析ESPN API. 可以在http://developer.espn.com/docs上找到API文档. 首先,您需要请求一个API密钥,然 ...
- 使用Java和Google GSON解析ESPN API
在我的第一篇文章中,我将解释如何解析ESPN API. 可以在http://developer.espn.com/docs上找到API文档. 首先,您需要请求一个API密钥,然后可以开始查询REST ...
- 深度解析 | K8S API Server之请求处理
对Kubernetes API 请求流程进行解析.后续还将对API Server的存储和扩展点等主题进行介绍.本篇是Kubernetes API Server系列第三篇. 请求和处理流程 在介绍 ...
- REST API规范
REST API规范是什么 REST 是Roy Fielding博士在2000年他的博士论文中提出的一种软件架构模式的风格.是一种设计风格,不是标准,没有谁强制性要求,只是提供了一组设计原则和约束条件 ...
- ElasticSearch入门-搜索(java api)
ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.J ...
- IT隐匿者官方解析系统API接口文档
IT隐匿者官方解析系统API接口文档 简要描述: 需要到平台注册自己账号,然后开通会员权限,就有自己的api接口 平台地址:IT隐匿者解析系统 接口只能用于自己的产品,禁止打包外售或与其他人共用,发现 ...
- 天鸟技术中台-建设过程-日常经验1:标准、规范、约定、极简、可读、单一职责、自动化
1.标准.规范.约定.极简.可读 技术中台,以模块来划分,不同模块,代码总体一致. 因为,中台本来就是要解决类似问题. 不同模型,主要还是CRUD,第1阶段,只考虑not core非核心业务. 核心业 ...
最新文章
- 火星上的甲烷从哪里来,科学家用算法给出了答案
- 判断是否Ajax请求
- 编程之美之控制cpu线
- spring的IOC注解
- oo面向对象第一单元总结
- ios beta 下载_如何回滚到iOS 10(如果您使用的是iOS 11 Beta)
- linux 生成hash值命令,linux-从给定哈希计算base64编码哈希?
- Kafka JMX监控报错 Failed to get broker metrics for BrokerIdentity(128,192.168.2.128,9999,true,false,Map
- 从入门到进阶,这10本高分书籍,优秀数据分析师越早读完越好
- AcWing 875. 快速幂
- 华北五省计算机应用大赛2018,2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛举行...
- 蓝牙音乐之AVRCP常用指令介绍
- Local-DPP论文阅读笔记
- c语言什么意思000094,Hello World 背后的真实故事
- CryEngine3SDK尝鲜
- OSChina 娱乐弹弹弹——程序猿的酒文化
- 基于微信小程序的自习室预约系统设计与实现-计算机毕业设计源码+LW文档
- php文件上传代码dsn,数据源名称无效-使用php、PDO和DSN连接到MySQL
- 蹉跎二十载,漫漫人生路
- [excel]如果去掉科学计数法,以及将正常的减号进行计算