術語查詢匹配單個術語,由於它是:不分析值。
因此,它沒必要根據你索引的狀況而下降。html
若是您在索引時間提供Bennett而且未分析該值,則如下查詢將不返回任何內容:app
{ "query": { "term" : { "user" : "bennett" } } }
match_phrase若是爲查詢字段定義分析器,則查詢將分析輸入,並查找符合如下標準的文檔:elasticsearch
>全部字詞必須出如今字段中
>它們必須具備與輸入值相同的順序ide
例如,若是您索引如下文檔(使用字段foo的標準分析器):ui
{ "foo":"I just said hello world" } { "foo":"Hello world" } { "foo":"World Hello" }
此match_phrase查詢將僅返回第一個和第二個文檔:code
{ "query": { "match_phrase": { "foo": "Hello World" } } }
query_string在默認狀況下,在包含多個文本字段的文本的_all字段上查詢搜索。最重要的是,它被解析並支持一些運算符(AND / OR …),通配符等(見related syntax)。htm
做爲match_phrase查詢,根據查詢字段上設置的分析器分析輸入。blog
取消連接match_phrase,分析後得到的術語沒必要按相同的順序,除非用戶已在輸入中使用引號。索引
例如,使用與之前相同的文檔,此查詢將返回全部文檔:文檔
{ "query": { "query_string": { "query": "hello World" } } }
可是此查詢將返回與match_phrase查詢相同的2個文檔:
{ "query": { "query_string": { "query": "\"Hello World\"" } } }
關於這些查詢的不一樣選項還有不少要說的,請查看相關文檔:
> term
> match_phrase
> query_string