日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

01.elasticsearch请求使用的基本语法

發(fā)布時(shí)間:2024/2/28 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 01.elasticsearch请求使用的基本语法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 簡(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è)方面

  • 多個(gè)index的匹配方式
  • 在index name中使用日期計(jì)算模板
  • api常見的參數(shù)
  • 基于url訪問index的限制(index name只能在url中傳遞)
  • 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, %2C

    3. 表達(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=true

    3. 日記計(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, 最近的一天

    y YearsM Monthsw Weeksd Daysh HoursH Hoursm Minutess Seconds

    舉例,假如當(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.**.state

    5. setting顯示折疊化 setting flatten

    GET twitter/_settings?flat_settings=true

    6. 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的含義是

  • term長(zhǎng)度小于等于2的時(shí)候編輯距離為0,需要完全匹配
  • term長(zhǎng)度為3-5的時(shí)候,編輯距離為1
  • term大于5的時(shí)候,編輯距離為2
  • 14. 開啟堆棧信息

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

    15. 使用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來避免這種情況

    rest.action.multi.allow_explicit_index: false

    這個(gè)配置只能在yml文件中配置

    總結(jié)

    以上是生活随笔為你收集整理的01.elasticsearch请求使用的基本语法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。