高級全文查詢一般用於在全文字段(如電子郵件正文)上運行全文查詢,它們瞭解如何分析被查詢的字段,並將在執行以前將每一個字段的analyzer
(或search_analyzer
)應用到查詢字符串。html
本組中的查詢爲:elasticsearch
match
querymatch_phrase
querymatch
查詢,但用於匹配精確的短語或單詞接近匹配。match_phrase_prefix
querymatch_phrase
查詢相似,可是在最後一個單詞上執行通配符搜索。multi_match
querymatch
查詢的多字段版本。common
terms queryquery_string
querysimple_query_string
queryquery_string
語法的一個更簡單、更健壯的版本,適合直接向用戶公開。match
查詢接受文本/數字/日期,分析它們並構造查詢,例如:ide
GET /_search { "query": { "match" : { "message" : "this is a test" } } }
注意,message
是字段的名稱,你能夠替換爲任何字段的名稱。ui
match
查詢是boolean
類型的,這意味着提供的文本被分析,而且分析過程從提供的文本構造一個布爾查詢,operator
標誌能夠設置爲or
或and
控制布爾子句(默認爲or
),能夠使用minimum_should_match
參數設置要匹配的可選should
子句的最小數量。this
能夠設置analyzer
來控制哪一個分析器將對文本執行分析過程,它默認爲字段顯式映射定義或默認搜索分析器。code
lenient
參數能夠設置爲true
以忽略由數據類型不匹配引發的異常,例如嘗試用文本查詢字符串查詢數值字段,默認值爲false
。htm
fuzziness
容許基於被查詢的字段類型進行模糊匹配,查看容許設置的模糊性。字符串
在這種狀況下,能夠設置prefix_length
和max_expansion
來控制模糊過程,若是設置了模糊選項,查詢將使用top_terms_blended_freqs_${max_expansions}
做爲其重寫方法,fuzzy_rewrite
參數容許控制查詢如何重寫。get
模糊互換(ab
→ba
)在默認狀況下都是容許的,但能夠經過設置fuzzy_transpositions
爲false
禁用。string
這裏有一個提供額外參數的例子(注意結構的細微變化,message
是字段名):
GET /_search { "query": { "match" : { "message" : { "query" : "this is a test", "operator" : "and" } } } }