es 的常用查詢語法

2021-08-06 06:50:51 字數 2180 閱讀 9627

term主要用於精確匹配哪些值,比如數字,日期,布林值或 not_analyzed 的字串(未經分析的文字資料型別): 

} } } }

完整的例子, hostname 字段完全匹配成 saaap.wangpos.com 的資料: } 

}terms 跟 term 有點類似,但 terms 允許指定多個匹配條件。 如果某個字段指定了多個值,那麼文件需要一起去做匹配: }

完整的例子,所有http的狀態是 302 、304 的, 由於es中狀態是數字型別的字段,所有這裡我們可以直接這麼寫。: } 

}range過濾允許我們按照指定範圍查詢一批資料: } 

}範圍操作符包含:

乙個完整的例子, 請求頁面耗時大於1秒的資料,upstream_response_time 是 nginx 日誌中的耗時,es中是數字型別。 } 

} }exists 和 missing 過濾可以用於查詢文件中是否包含指定欄位或沒有某個字段,類似於sql語句中的is_null條件.  } 

這兩個過濾只是針對已經查出一批資料來,但是想區分出某個字段是否存在的時候使用。

bool 過濾可以用來合併多個過濾條件查詢結果的布林邏輯,它包含一下操作符:

這些引數可以分別繼承乙個過濾條件或者乙個過濾條件的陣列:

}, "must_not": }, 

"should": [ 

}, } 

] } 

}可以查詢到所有文件,是沒有查詢條件下的預設語句。 }

此查詢常用於合併過濾條件。 比如說你需要檢索所有的郵箱,所有的文件相關性都是相同的,所以得到的_score為1.

match查詢是乙個標準查詢,不管你需要全文本查詢還是精確查詢基本上都要用到它。

如果你使用 match 查詢乙個全文本欄位,它會在真正查詢之前用分析器先分析match一下查詢字元: }

如果用match下指定了乙個確切值,在遇到數字,日期,布林值或者not_analyzed 的字串時,它將為你搜尋你給定的值:

} } } }

match查詢只能就指定某個確切字段某個確切的值進行搜尋,而你要做的就是為它指定正確的欄位名以避免語法錯誤。

multi_match查詢允許你做match查詢的基礎上同時搜尋多個字段,在多個欄位中同時查乙個: }

bool 查詢與 bool 過濾相似,用於合併多個查詢子句。不同的是,bool 過濾可以直接給出是否匹配成功, 而bool 查詢要計算每乙個查詢子句的 _score (相關性分值)。

以下查詢將會找到 title 欄位中包含 "how to make millions",並且 "tag" 字段沒有被標為 spam。 如果有標識為 "starred" 或者發布日期為2023年之前,那麼這些匹配的文件將比同類**等級高:

}, "must_not": }, 

"should": [ 

}, }} 

] } 

}上面內容來自: 

elasticsearch 查詢(match和term) 

使用標準的shell萬用字元查詢

參考: 

以下查詢能夠匹配包含w1f 7hw和w2f 8hw的文件: 

get /my_index/address/_search  } 

}又比如下面查詢 hostname 匹配下面shell萬用字元的: } 

}get /my_index/address/_search  } 

}這個正規表示式的規定了詞條需要以w開頭,緊跟著乙個0到9的數字,然後是乙個或者多個其它字元。

下面例子是所有以 wxopen 開頭的正則 } 

}參考: 

以什麼字元開頭的,可以更簡單地用 prefix,如下面的例子: } 

}參考 : 

更多的查詢命令,可以看: 

當你需要尋找鄰近的幾個單詞時,你會使用match_phrase查詢:

get /my_index/my_type/_search

}}

和match查詢類似,match_phrase查詢首先解析查詢字串來產生乙個詞條列表。然後會搜尋所有的詞條,

但只保留含有了所有搜尋詞條的文件,並且詞條的位置要鄰接。乙個針對短語quick fox的查詢不會匹配

我們的任何文件,因為沒有文件含有鄰接在一起的quick和box詞條。

match_phrase查詢也可以寫成型別為phrase的match查詢:

"match": 

}

ES基本查詢語法

1.term主要用於精確匹配哪些值,比如數字,日期,布林值或 not analyzed 的字串 未經分析的文字資料型別 2.terms 跟 term 有點類似,但 terms 允許指定多個匹配條件。如果某個字段指定了多個值,那麼文件需要一起去做匹配 3.range過濾允許我們按照指定範圍查詢一批資料...

ES常用的語法點

let let宣告的變數不存在預解析 let宣告的變數不允許重複 在同乙個作用域內 let在塊內部定義的變數,在外部不可訪問,單單乙個 也是如此 在塊級作用域內部,let也只能宣告變數再使用const const 用來宣告常量 const宣告的常量不允許重新賦值,宣告的時候就要初始化陣列擴充套件 i...

ES 常用查詢

1.term精確查詢,實際上是包含的意思 用法一 與bool,filter使用 get zf en search 用法二 直接term查詢 get zf en search 2.bulk 批量寫入,注意,必須指定 id,須換行 如果 id存在,執行的是update操作 3.組合查詢,bool 布林 ...