match_all(獲取全部索引文檔)html
quert_string(獲取包含指定關鍵字文檔)
默認查詢_all字段,_all字段是由全部字段組合而成的,能夠經過description:關鍵字,獲取經過請求的時候來設置default_field。可以使用AND和OR這種布爾操做符來組合詞條搜索,也可使用減號(-)來排除文檔。elasticsearch
缺點:因爲query_string能夠經過組合條件來獲取全部索引的文檔,建議替換成term,terms,match或者multi_match查詢spa
term查詢和term過濾器
term能夠指定搜索的文檔字段和關鍵詞(被搜索的關鍵詞是沒有通過分析的,因此返回的文檔是精準匹配關鍵詞的)term過濾器也能夠是返回的結果包含指定關鍵詞,可是無需計算得分,因此可使用match_all,返回的全部文檔_score都是1.0分。htm
terms查詢
與term查詢類似,容許查詢多個關鍵詞,經過minimum_should_match設置最低匹配幾個關鍵詞。索引
match查詢
查詢指定字段的關鍵詞,也能夠查詢_all字段,match查詢有多中方式,最多見的是布爾查詢和詞組。ip
一、布爾查詢
默認狀況下,match查詢使用布爾行爲和OR操做符。例如,若是搜索文本「Elasticsearch Denver」,Elasticsearch 會搜索「Elasticsearch OR Denver」,同時匹配「Elasticsearch Amsterdam’和「Denver Clojure Group」聚合分組。爲了搜索同時包含「Elasticsearch」 和「Denver」 關鍵詞的結果,將match字段的name修改成一個映射,並將operator字段設置爲and,達到改變操做符的目的。rem
二、詞組
在文檔中搜索指定的詞組時,phrase查詢是很是有用的,每一個單詞的位置之間能夠留有餘地。這種餘地稱做slop,用於表示詞組中多個分詞之間的距離。假設你試圖記起某個聚合分組的名字,只記得「Enterprise」 和「London」 兩個詞,可是不記得名字其他的部分了。你能夠搜.索詞組「enterprise london」,將slop設置爲1或者2,而不是默認的0,如此-一來,沒有必要知道分組的精確標題,就能夠尋找包含該詞組的結果。文檔
phrase_prefix查詢匹配最後一個關鍵詞。在下面的例子中,phrase_ prefix查詢使用的是「elasticsearch den」。Elasticsearch 使用「den」文本進行前綴匹配,查找全部name字段,發現那些以「den」 開始的取值(如「Denver」)。 因爲產生的結果多是個很大的集合,須要限制擴展的數量。
使用multi_ match來匹配多個字段
儘管很容易聯想到,multi_ match查詢和搜索單字段中多個匹配的詞條查詢,它們的行爲表現會很是相像,可是二者的行爲仍是有細微的區別。多字段匹配容許你搜索多個字段中的值。在聚合的案例中,這一點很是有用,能夠同時在分組的名稱和描述中搜索某個字符串。字符串
做者:onlooker
來源:三無青年博客
原文: https://www.35youth.cn/724.html 版權聲明:本文爲博主原創文章,轉載請附上博文連接!