請求體查詢 最重要的查詢

2021-08-15 21:31:20 字數 2048 閱讀 8422

雖然 elasticsearch 自帶了很多的查詢,但經常用到的也就那麼幾個。我們將在 

深入搜尋

章節詳細討論那些查詢的細節,接下來我們對最重要的幾個查詢進行簡單介紹。

match_all查詢

match_all查詢簡單的

匹配所有文件。在沒有指定查詢方式時,它是預設的查詢:

"match_all"

:{}}

它經常與 filter 結合使用--例如,檢索收件箱裡的所有郵件。所有郵件被認為具有相同的相關性,所以都將獲得分值為1的中性 `_score`。

match查詢

無論你在任何欄位上進行的是全文搜尋還是精確查詢,match查詢是你可用的標準查詢。

如果你在乙個全文本段上使用match查詢,在執行查詢前,它將用正確的分析器去分析查詢字串:

"match":}

如果在乙個精確值的字段上使用它,

例如數字、日期、布林或者乙個not_analyzed字串字段,那麼它將會精確匹配給定的值:

"match":}}}}

對於精確值的查詢,你可能需要使用 filter 語句來取代 query,因為 filter 將會被快取。接下來,我們將看到一些關於 filter 的例子。

不像我們在 

輕量 搜尋

章節介紹的字串查詢(query-string search),match查詢不使用類似+user_id:2 +tweet:search的查詢語法。它只是去查詢給定的單詞。這就意味著將查詢字段暴露給你的使用者是安全的;你需要控制那些允許被查詢字段,不易於丟擲語法異常。

multi_match查詢

multi_match查詢可以在多個欄位上執行相同的match查詢:

"multi_match":}

range查詢

"range":}

}被允許的操作符如下:

gt

大於gte

大於等於

lt

小於lte

小於等於

term查詢

term查詢被用於精確值

匹配,這些精確值可能是數字、時間、布林或者那些not_analyzed的字串:

"term":}

}}}term查詢對於輸入的文字不 

分析,所以它將給定的值進行精確查詢。

terms查詢

terms查詢和term查詢一樣,但它允許你指定多值進行匹配。如果這個字段包含了指定值中的任何乙個值,那麼這個文件滿足條件:

"terms":}

term查詢一樣,terms查詢對於輸入的文字不分析。它查詢那些精確匹配的值(包括在大小寫、重音、空格等方面的差異)。

exists查詢和missing查詢

exists查詢和missing查詢

被用於查詢那些指定欄位中有值 (exists) 或無值 (missing) 的文件。這與sql中的is_null(missing) 和not is_null(exists) 在本質上具有共性:

"exists":}

這些查詢經常用於某個欄位有值的情況和某個欄位缺值的情況。

請求體查詢 驗證查詢

查詢可以變得非常的複雜,尤其 和不同的分析器與不同的字段對映結合時,理解起來就有點困難了。不過validate queryapi 可以用來驗證查詢是否合法。gb tweet validate query 以上validate請求的應答告訴我們這個查詢是不合法的 valid false shards ...

請求體查詢 查詢與過濾

elasticsearch 使用的查詢語言 dsl 擁有一套查詢元件,這些元件可以以無限組合的方式進行搭配。這套元件可以在以下兩種情況下使用 過濾情況 filtering context 和查詢情況 query context 當使用於 過濾情況 時,查詢被設定成乙個 不評分 或者 過濾 查詢。即,...

ES 學習3 請求體查詢

1.空查詢 get index 2014 type1,type2 search get search 2.查詢表示式 dsl只需將查詢語句傳遞給query引數 get search 查詢全部 match all 跟空查詢等價 get search 針對某個字段,結構 get search 3.查詢與...