term,match,match_phrase的區(qū)別

  1. term查詢是基于詞項的查詢,而且當設置為term查詢時,es不會對這個詞做任何處理,但是在文本進行分詞時,通常都會將大寫轉為小寫,這個時候就會出現(xiàn)查不出來的情況,比如:
POST /test_2017/_doc
{
  "name":"Pantheon"
}

這樣創(chuàng)建出來的doc可以看到明顯做了lowercase,因為用的standard分詞器
GET /test_2017/_analyze
{
  "field": "name",
  "text": "Pantheon"
  
}

所以當使用下面的語句去查時,會沒有結果
GET /test_2017/_search
{
  "query": {
    "term": {
      "name": {
        "value": "Pantheon"
      }
    }
  }
}
所以需要使用es給字段額外添加的一個元數(shù)據(jù)信息.keyword,在生成文本時,es也會將該字段原封不動的保存到keyword屬性當中去,所以下面這個語句可以查詢出來

GET /test_2017/_search
{
  "query": {
    "term": {
      "name.keyword": {
        "value": "Pantheon"
      }
    }
  }
}
  1. match 和match_pharse查詢都是屬于全文查詢,全文查詢會給當前的句子進行分詞,通常來講,索引的時候咋分的詞,查詢的時候就是用的什么分詞器,默認是不用設置的,但是如果有個別場景,也可以自己設置分詞器,ok,他兩的區(qū)別舉個例子,"I am Pantheon",這句話如果用match來查,會搜出字段中有"I","am","Pantheon"的文檔,也就是說默認是只要這段話中有這查詢幾個詞的一個就返回文檔,當然也可以設置他的'operator'屬性為'and',要求查出來的必須包含"I am Pantheon"這幾個詞",而match_pharse可以精確的查詢"I am Pantheon"這一段話,這幾個詞之間有沒有間隔可以通過slot屬性來設置,比如設置了slot為1,那就可以查出"I am not Pantheon"這樣的句子,舉例如下:
POST /test_2017/_bulk
{ "index": { "_id": 1 }}
{ "desc":"I am Pantheon" }
{ "index": { "_id": 2 }}
{ "desc":"I am not Pantheon" }
{ "index": { "_id": 3 }}
{ "desc":"I am Leo" }

### 結果1
GET /test_2017/_search
{
  "query": {
    "match": {
      "desc": "I am Pantheon"
    }
  }
}
### 結果2
GET /test_2017/_search
{
  "query": {
    "match": {
      "desc":{
        "query": "I am Pantheon",
        "operator": "and"
      }
    }
  }
}
### 結果3
GET /test_2017/_search
{
  "query": {
    "match_phrase": {
      "desc":{
        "query": "I am Pantheon"
      }
    }
  }
}
### 結果4
GET /test_2017/_search
{
  "query": {
    "match_phrase": {
      "desc":{
        "query": "I am Pantheon",
        "slop": 1
      }
    }
  }
}
結果1
結果2
結果3
結果4

3.總結
這三種查詢都是對分詞組合不同的玩法,term查詢,只是查分詞,不會對查詢語句做任何處理,match查詢,查詢語句分詞后對文檔是否包含的一種,match_phase是對查詢語句分詞后,各詞項間隔距離多少的玩法

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容