01.elasticsearch请求使用的基本语法
文章目錄
- 簡(jiǎn)介
- 1. 多個(gè)index的匹配方式
- 2. 在index name中使用日期計(jì)算模板
- 1. 對(duì)應(yīng)的索引的模式是
- 2. 一個(gè)樣例模板
- 3. 表達(dá)式樣例
- 3. api常見的參數(shù)
- 1. 美化展示pretty result
- 2. 便于閱讀的格式 human readable output
- 3. 日記計(jì)算語法 date math
- 4. 返回結(jié)果過濾器 response filter
- 5. setting顯示折疊化 setting flatten
- 6. uri傳參
- 7. boolean如何表示
- 8. 數(shù)字如何表示
- 9. 時(shí)間單位 time unit
- 10. 存儲(chǔ)單位,byte size unit
- 11. 數(shù)字單位制
- 12. 距離單位distance unit
- 13. 模糊匹配的規(guī)則
- 14. 開啟堆棧信息
- 15. 使用query-string傳遞request body
- 16. 需要的content-type
- 4. 基于url訪問index的限制(index name只能在url中傳遞)
簡(jiǎn)介
這篇文章主要介紹es的各個(gè)api使用的時(shí)候的一些基本的參數(shù)或者語法,主要包括3個(gè)方面
1. 多個(gè)index的匹配方式
index的匹配規(guī)則分為兩種,一種是完全匹配,一種是模糊匹配()
完全匹配就是提供索引的全稱,比如 test01,test02等等
模糊匹配就是正常的字符串和通配符*,比如 test1,test2,test*,*test, *test*
模糊匹配和可以配合非匹配模式使用,比如 test*,-test01,表示使用test開頭的索引,但是要排除test01索引
樣例
GET test*,-test01/_search返回的只有test索引相關(guān)的數(shù)據(jù), test01中的數(shù)據(jù)不會(huì)被召回
還有幾個(gè)相關(guān)的參數(shù)
ignore_unavailable:是否忽略不存在(或者是close)的索引,值可以是true,false
allow_no_indices: 是否允許通配符匹配沒有匹配到索引,值可以是true,false
expand_wildcards: 允許通配符匹配什么類型的的索引,值可以是close,open
這幾個(gè)參數(shù)的默認(rèn)值在不同索引中可能不一樣
2. 在index name中使用日期計(jì)算模板
在查詢中指定index的name的時(shí)候可以使用日期計(jì)算模板來動(dòng)態(tài)的指定索引的名稱。
1. 對(duì)應(yīng)的索引的模式是
<static_name{date_math_expr{date_format|time_zone}}>static_name: 索引name中的固定字符串部分
date_math_expr: date的計(jì)算模板
date_format: 日期的格式
time_zone: 時(shí)區(qū),默認(rèn)為utc時(shí)區(qū)
2. 一個(gè)樣例模板
# GET /<logstash-{now/d}>/_search GET /%3Clogstash-%7Bnow%2Fd%7D%3E/_search {"query" : {"match": {"test": "data"}} }字符串都要進(jìn)行轉(zhuǎn)義
< %3C> %3E/ %2F{ %7B} %7D| %7C+ %2B: %3A, %2C3. 表達(dá)式樣例
<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關(guān)于日期計(jì)算表達(dá)式的運(yùn)算規(guī)則,在下一個(gè)小節(jié)中會(huì)具體的講述
3. api常見的參數(shù)
這里講述的是一些常見的請(qǐng)求參數(shù),大部分是輔助性的參數(shù)
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=true3. 日記計(jì)算語法 date math
date math的格式是這樣的
1.開頭,必須以 now或者 日期字符串||開頭
2. 進(jìn)行時(shí)間的加減,取某一天等計(jì)算(可以沒有這一段)
+1h: Add one hour
-1d: Subtract one day
/d: Round down to the nearest day, 最近的一天
舉例,假如當(dāng)前是now是 2001-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. 返回結(jié)果過濾器 response filter
主要使用了路徑過濾
GET /_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score GET /_cluster/state?filter_path=metadata.indices.*.stat*使用兩個(gè)*可以匹配任何多個(gè)路徑 GET /_cluster/state?filter_path=routing_table.indices.**.state5. setting顯示折疊化 setting flatten
GET twitter/_settings?flat_settings=true6. uri傳參
這個(gè)地方是強(qiáng)調(diào)es的rest api的傳參方式實(shí)際上是和http的傳參方式是一致的
7. boolean如何表示
使用字符串的 "true" , "false"表示 true,false
8. 數(shù)字如何表示
直接使用字符串即可,不用再加雙引號(hào)
9. 時(shí)間單位 time unit
d: 天
h: 小時(shí)
m: 分鐘
s: 秒
ms: 毫秒
micros: 微秒
nanos: 納秒
10. 存儲(chǔ)單位,byte size unit
b,kb,mb,gb,tb, pb
11. 數(shù)字單位制
k
m
g
t
p
12. 距離單位distance unit
13. 模糊匹配的規(guī)則
fuzziness查詢的時(shí)候指定單個(gè)term的編輯距離,一般是字符級(jí)別的編輯距離,默認(rèn)情況下是auto,
auto的含義是
14. 開啟堆棧信息
POST /twitter/_search?size=surprise_me&error_trace=true15. 使用query-string傳遞request body
16. 需要的content-type
大部分情況下我們都要增加一個(gè) Content-Typeheader來標(biāo)示我們傳輸?shù)膬?nèi)容的格式
4. 基于url訪問index的限制(index name只能在url中傳遞)
有些時(shí)候我們會(huì)有一個(gè)前置的代理做權(quán)限控制,基于訪問的uri中攜帶的index來做權(quán)限控制,但是有些人不在uri中使用index,或者在請(qǐng)求的body中重寫請(qǐng)求的index,這樣就繞過了權(quán)限校驗(yàn)
我們可以通過在es中設(shè)置禁止在body中使用index name來避免這種情況
這個(gè)配置只能在yml文件中配置
總結(jié)
以上是生活随笔為你收集整理的01.elasticsearch请求使用的基本语法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 05.elasticsearch-ind
- 下一篇: 02.elasticsearch_rea