es(七) 請結構化查詢

2021-09-25 16:40:27 字數 2001 閱讀 1165

請求體查詢,並不僅僅用來處理查詢,而且還可以高亮返回結果中的片段,並且給出幫助你的使用者找尋最好 結果的相關資料建議。

1.1 空查詢

空查詢將會返回索引中所有的文件。

同字串查詢一樣,你可以查詢乙個,多個或 _all 索引(indices)或型別(types):

你可以使用 from 及 size 引數進行分頁:

search api同樣支援 post 請求,類似於這樣:

使用結構化查詢,你需要傳遞 query 引數:

空查詢 - {} - 在功能上等同於使用 match_all 查詢子句,正如其名字一樣,匹配所有的文件:

2.1 查詢子句

乙個查詢子句一般使用這種結構:

或指向乙個指定的字段:

例如,你可以使用 match 查詢子句用來找尋在 tweet 欄位中找尋包含 elasticsearch 的成員:

get	/_search 				

} }

2.2 合併多子句

以下例項查詢在inbox中或未標記spam的郵件中找出包含 「business opportunity」 的星標(starred)郵件:

前面我們講到的是關於結構化查詢語句,事實上我們可以使用兩種結構化語句: 結構化查詢(query dsl)和結構化過濾 (filter dsl)。 查詢與過濾語句非常相似,但是它們由於使用目的不同而稍有差異。

3.1 過濾語句

一條過濾語句會詢問每個文件的字段值是否包含著特定值:

3.2 查詢語句

一條查詢語句與過濾語句相似,但問法不同:

查詢語句會詢問每個文件的字段值與特定值的匹配程度如何?

查詢語句的典型用法是為了找到文件:

一條查詢語句會計算每個文件與查詢語句的相關性,會給出乙個相關性評分 _score ,並且 按照相關性對匹配到的文件進行 排序。 這種評分方式非常適用於乙個沒有完全配置結果的全文本搜尋。

3.3 效能差異

使用過濾語句得到的結果集 – 乙個簡單的文件列表,快速匹配運算並存入記憶體是十分方便的, 每個文件僅需要1個位元組。這 些快取的過濾結果集與後續請求的結合使用是非常高效的。

查詢語句不僅要查詢相匹配的文件,還需要計算每個文件的相關性,所以一般來說查詢語句要比 過濾語句更耗時,並且查詢 結果也不可快取。

幸虧有了倒排索引,乙個只匹配少量文件的簡單查詢語句在百萬級文件中的查詢效率會與一條經過快取 的過濾語句旗鼓相 當,甚至略占上風。 但是一般情況下,一條經過快取的過濾查詢要遠勝一條查詢語句的執行效率。

過濾語句的目的就是縮小匹配的文件結果集,所以需要仔細檢查過濾條件。

3.4 什麼情況下使用

原則上來說,使用查詢語句做全文本搜尋或其他需要進行相關性評分的時候,剩下的全部用過濾語句

結構化管理(七)

第十二章 採購管理 採購管理的內涵 1 規劃採購管理 確定採購管理計畫 確定自製或者外包 確定採購策略 合同支付型別 準備採購工作說明書 sow 確定供方選擇標準 獨立成本估算 2 實施採購 發布招標廣告或招標檔案 確定合格賣方的短名單 舉行投標人會議 賣方提交建議書 招標檔案 對建議書開展評估 技...

結構化查詢語言

結構化查詢語言 structured query language 簡稱sql 發音 es kju el s q l 是一種特殊目的的程式語言,是一種資料庫查詢和程式語言,用於訪問資料以及查詢 更新和管理關係資料庫系統 同時也是資料庫指令碼檔案的副檔名。結構化查詢語言是高階的非過程化程式語言,允許使...

ES 學習4 結構化搜尋

1.結構化搜尋得到的結果只有是和否,沒有相似概念。term可以實現精確值查詢 curl xget localhost 9200 logstash cowrie search?pretty d 因為term是非評分的,所以要用constant score的方式將其轉化為過濾器。注意 如果沒有const...