elasticsearch – 彈性搜索:「Term」,「Match Phrase」和「Query String」之間的差別

術語查詢匹配單個術語,由於它是:不分析值。
因此,它沒必要根據你索引的狀況而下降。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

 

https://www.cnblogs.com/buxizhizhoum/p/9874703.html

相關文章
相關標籤/搜索