文章目录

  • 简介
  • 1. 多个index的匹配方式
  • 2. 在index name中使用日期计算模板
    • 1. 对应的索引的模式是
    • 2. 一个样例模板
    • 3. 表达式样例
  • 3. api常见的参数
    • 1. 美化展示pretty result
    • 2. 便于阅读的格式 human readable output
    • 3. 日记计算语法 date math
    • 4. 返回结果过滤器 response filter
    • 5. setting显示折叠化 setting flatten
    • 6. uri传参
    • 7. boolean如何表示
    • 8. 数字如何表示
    • 9. 时间单位 time unit
    • 10. 存储单位,byte size unit
    • 11. 数字单位制
    • 12. 距离单位distance unit
    • 13. 模糊匹配的规则
    • 14. 开启堆栈信息
    • 15. 使用query-string传递request body
    • 16. 需要的content-type
  • 4. 基于url访问index的限制(index name只能在url中传递)

简介

这篇文章主要介绍es的各个api使用的时候的一些基本的参数或者语法,主要包括3个方面

  1. 多个index的匹配方式
  2. 在index name中使用日期计算模板
  3. api常见的参数
  4. 基于url访问index的限制(index name只能在url中传递)

1. 多个index的匹配方式

index的匹配规则分为两种,一种是完全匹配,一种是模糊匹配()
完全匹配就是提供索引的全称,比如 test01,test02等等
模糊匹配就是正常的字符串和通配符*,比如 test1,test2,test*,*test, *test*
模糊匹配和可以配合非匹配模式使用,比如 test*,-test01,表示使用test开头的索引,但是要排除test01索引

样例

GET test*,-test01/_search

返回的只有test索引相关的数据, test01中的数据不会被召回

还有几个相关的参数
ignore_unavailable:是否忽略不存在(或者是close)的索引,值可以是true,false
allow_no_indices: 是否允许通配符匹配没有匹配到索引,值可以是true,false
expand_wildcards: 允许通配符匹配什么类型的的索引,值可以是close,open

这几个参数的默认值在不同索引中可能不一样

2. 在index name中使用日期计算模板

在查询中指定index的name的时候可以使用日期计算模板来动态的指定索引的名称。

1. 对应的索引的模式是

<static_name{date_math_expr{date_format|time_zone}}>

static_name: 索引name中的固定字符串部分
date_math_expr: date的计算模板
date_format: 日期的格式
time_zone: 时区,默认为utc时区

2. 一个样例模板

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

字符串都要进行转义

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

3. 表达式样例


<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

关于日期计算表达式的运算规则,在下一个小节中会具体的讲述

3. api常见的参数

这里讲述的是一些常见的请求参数,大部分是辅助性的参数

1. 美化展示pretty result

?pretty=true
?format=yaml 
GET test01/_search?format=yaml
返回
took: 0
timed_out: false
_shards:total: 1successful: 1skipped: 0failed: 0
hits:total:value: 1relation: "eq"max_score: 1.0hits:- _index: "test01"_type: "_doc"_id: "CRCXd3UB0LiXOVZQCY2j"_score: 1.0_source:name: "hahah"

2. 便于阅读的格式 human readable output

?human=false
?human=true

3. 日记计算语法 date math

date math的格式是这样的
1.开头,必须以 now或者 日期字符串||开头
2. 进行时间的加减,取某一天等计算(可以没有这一段)
+1h: Add one hour
-1d: Subtract one day
/d: Round down to the nearest day, 最近的一天

y  YearsM Monthsw Weeksd Daysh HoursH Hoursm Minutess Seconds

举例,假如当前是now2001-01-01 12:00:00
now+1h : 2001-01-01 13:00:00

now-1h: 2001-01-01 11:00:00

now-1h/d: 2001-01-01 00:00:00

2001.02.01||+1M/d: 2001-03-01 00:00:00

4. 返回结果过滤器 response filter

主要使用了路径过滤

GET /_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score
GET /_cluster/state?filter_path=metadata.indices.*.stat*使用两个*可以匹配任何多个路径
GET /_cluster/state?filter_path=routing_table.indices.**.state

5. setting显示折叠化 setting flatten

GET twitter/_settings?flat_settings=true

6. uri传参

这个地方是强调es的rest api的传参方式实际上是和http的传参方式是一致的

7. boolean如何表示

使用字符串的 "true" , "false"表示 true,false

8. 数字如何表示

直接使用字符串即可,不用再加双引号

9. 时间单位 time unit

d: 天
h: 小时
m: 分钟
s: 秒
ms: 毫秒
micros: 微秒
nanos: 纳秒

10. 存储单位,byte size unit

b,kb,mb,gb,tb, pb

11. 数字单位制

k
m
g
t
p

12. 距离单位distance unit

13. 模糊匹配的规则

fuzziness查询的时候指定单个term的编辑距离,一般是字符级别的编辑距离,默认情况下是auto,
auto的含义是

  1. term长度小于等于2的时候编辑距离为0,需要完全匹配
  2. term长度为3-5的时候,编辑距离为1
  3. term大于5的时候,编辑距离为2

14. 开启堆栈信息

POST /twitter/_search?size=surprise_me&error_trace=true

15. 使用query-string传递request body


16. 需要的content-type

大部分情况下我们都要增加一个 Content-Typeheader来标示我们传输的内容的格式

4. 基于url访问index的限制(index name只能在url中传递)

有些时候我们会有一个前置的代理做权限控制,基于访问的uri中携带的index来做权限控制,但是有些人不在uri中使用index,或者在请求的body中重写请求的index,这样就绕过了权限校验
我们可以通过在es中设置禁止在body中使用index name来避免这种情况

rest.action.multi.allow_explicit_index: false

这个配置只能在yml文件中配置

01.elasticsearch请求使用的基本语法相关推荐

  1. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  2. Flask框架 请求与响应 模板语法

    目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...

  3. 01. elasticsearch certification 练习题

    文章目录 1. node setting 2. parent/child 文档 1. nested相关 2. join类型设置 3. query查询 1. 简单高亮 2. 模糊查询 3. multi_ ...

  4. Elasticsearch查询和聚合基本语法

    1.概述 Elasticsearch主要的查询语法包括URI查询和body查询,URI比较轻便快速,而body查询作为一种json的格式化查询,可以有许多限制条件.本文主要介绍结构化查询的query, ...

  5. ElasticSearch bulk批量增删改语法(来自学习资料 + 自己整理,第27节)

    1 bulk语法 通过bulk语法,可以将crud所需的不同的操作放在一个语句里面. 先来查找一下看是否有数据: 查询命令为如下时: GET /test_index/test_type/1 查询的结果 ...

  6. ElasticSearch[01]ElasticSearch基础操作

    ElasticSearch版本:7.8.1 测试工具:Postman.ElasticSearch Head 参考视频:[尚硅谷]ElasticSearch教程入门到精通(基于ELK技术栈elastic ...

  7. 01.elasticsearch metric aggregation 查询

    文章目录 1. 数据准备 2. metric aggregation分类 3.使用样例 1 . Avg Aggregation : 求query出来的结果的average 值 2 . Weighted ...

  8. ELK入门01—Elasticsearch安装

    1. 安装 首先从官网下载安装包 此处我们选择2.4.6这个版本,然后下载tar压缩包 下载以后直接解压,就算安装完成了 tar zxvf elasticsearch-2.4.6.tar.gz 2. ...

  9. 01.Elasticsearch安装

    1.下载运行Elasticsearch 1.下载解压elasticsearch Elasticsearch官网地址:https://www.elastic.co/ Elasticsearch最新版下载 ...

最新文章

  1. python做excel表格柱状图_用python处理excel数据(八)实现excel表中柱状图功能
  2. 三星emcp型号详解_Samsung eMCP(三星eMCP).pdf
  3. LeetCode MySQL 1280. 学生们参加各科测试的次数
  4. C语言编写游戏的程序教程,用C语言写贪吃蛇游戏图文教程
  5. window一键清理垃圾代码
  6. Java组合模式(Composite)
  7. Git 学习(篇六 --储藏与清理)
  8. NVIDIA,怎么查看显卡
  9. Ch11. Threads 线程
  10. axure下移固定地方_axure固定元件位置 教程:使用axure动态面板制作一个返回顶部的按钮...
  11. Biodiversity and Ecosystem Functioning(生物多样性和生态系统功能)
  12. 为何优秀的程序员不断离开?,字节跳动8年老Java面试官经验谈
  13. [转载]深入Windows NT/2000模块的组织 - 专题安全方向{ Security Research Papers } - 邪恶八进制信息安全团队技术讨论组 努力为祖国的信息安全撑起一片蓝天
  14. 【嵌入式入门篇】嵌入式0基础沉浸式刷题篇1
  15. 可精确到小数点后三位的光电测径仪
  16. 利用BCB自己打造QQ炸弹
  17. 官宣:深度剖析免费OA系统是如何盈利
  18. 选导师必看!解析6种导师/课题组类型
  19. 试谈中国地理环境与中国文化的联系
  20. 【黑金原创教程】【Modelsim】【第三章】理想就是美丽

热门文章

  1. QEMU 网络虚拟化
  2. python获取列表list里面元素的下标
  3. Netty学习笔记(二)Netty服务端流程启动分析
  4. 知乎热榜:如何获得高并发的经验?
  5. 摊牌了,我 HTTP 功底贼好!
  6. 这代码写的跟狗屎一样!怎么优化?
  7. Kafka分区分配策略(2)——RoundRobinAssignor和StickyAssignor
  8. 真实世界的 TCP HOL blocking
  9. LiveVideoStackCon讲师热身分享 ( 九 ) —— 51Talk音视频技术思考及非典型挑战
  10. 刘歧:FFmpeg Filter深度应用