術語查詢匹配單個術語,因為它是:不分析值。
所以,它不必根據你索引的情況而降低。
如果您在索引時間提供Bennett并且未分析該值,則以下查詢將不返回任何內容:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase如果為查詢字段定義分析器,則查詢將分析輸入,并查找符合以下標準的文檔:
>所有字詞必須出現在字段中
>它們必須具有與輸入值相同的順序
例如,如果您索引以下文檔(使用字段foo的標準分析器):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
此match_phrase查詢將僅返回第一個和第二個文檔:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string在默認情況下,在包含多個文本字段的文本的_all字段上查詢搜索。最重要的是,它被解析并支持一些運算符(AND / OR …),通配符等(見related syntax)。
作為match_phrase查詢,根據查詢字段上設置的分析器分析輸入。
取消鏈接match_phrase,分析后獲得的術語不必按相同的順序,除非用戶已在輸入中使用引號。
例如,使用與以前相同的文檔,此查詢將返回所有文檔:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
但是此查詢將返回與match_phrase查詢相同的2個文檔:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
關于這些查詢的不同選項還有很多要說的,請查看相關文檔: