term query與match query區別


看官方提供的例子

PUT my_index  
{  
  "mappings": {  
    "my_type": {  
      "properties": {  
        "full_text": {  
          "type":  "string"    
        },  
        "exact_value": {  
          "type":  "string",  
          "index": "not_analyzed"    
        }  
      }  
    }  
  }  
}

 

1.首先設置索引名稱為my_index,類型為my_type的映射,設置該索引的full_text字段類型為String,exact_value字段類型為String, "index": "not_analyzed"表示該字段不分詞

不清楚映射與分詞的請看這里:https://github.com/looly/elasticsearch-definitive-guide-cn/blob/master/052_Mapping_Analysis/40_Analysis.md

 

2.添加一條數據

PUT my_index/my_type/1  
{  
  "full_text":   "Quick Foxes!",    
  "exact_value": "Quick Foxes!"     
} 

索引名為my_index,類型為my_type,id為1

full_text字段的值為Quick Foxes!

exact_value字段的值為Quick Foxes!

 

注:

 

String字段可以分詞,也可以不分詞,分詞的時候,默認的標准分析器可以將一句話中的單詞划分開,然后轉為小寫,比如Quick Brown Fox!,標准分析器將會將它轉換為quick , brown , fox,

 

由於full_text字段分詞,因此在倒排索引中被默認標准分析器分為quick , foxes

exact_value字段不分詞,在倒排索引中該字段的值仍為QuickFoxes!

 

 

3.執行查詢

(1)使用term查詢exact_value,搜索內容為Quick Foxes!

 

GET my_index/my_type/_search  
{  
  "query": {  
    "term": {  
      "exact_value": "Quick Foxes!"    
    }  
  }  
} 

 

由於exact_value不分詞,Quick Foxes!與exact_value的值QuickFoxes!匹配,因此可以匹配

 

(2)使用term查詢full_text,搜索內容為Quick Foxes!

GET my_index/my_type/_search  
{  
  "query": {  
    "term": {  
      "full_text": "Quick Foxes!"    
    }  
  }  
}  

由於full_text字段默認使用標准分析器分詞,在倒排索引中被分為quick和foxes,因此使用Quick Foxes!匹配不到內容


(3)使用term查詢full_text,搜索內容為foxes

GET my_index/my_type/_search  
{  
  "query": {  
    "term": {  
      "full_text": "foxes"    
    }  
  }  
}  

 

由於full_text字段默認使用標准分析器分詞,在倒排索引中被分為quick和foxes,因此使用 foxes可以匹配到

 

(4)使用match查詢full_text,查詢內容為Quick Foxes!

 

GET my_index/my_type/_search  
{  
  "query": {  
    "match": {  
      "full_text": "Quick Foxes!"    
    }  
  }  
}  

 

使用match搜索,先分析搜索字符串Quick Foxes!,對它分詞,然后搜索full_text中含有quick或者foxes或者兩者都包含的文檔,由於full_text字在倒排索引中被分為quick和foxes,因此可以匹配到.

 

總結:

match query搜索的時候,首先會解析查詢字符串,進行分詞,然后查詢,而term query,輸入的查詢內容是什么,就會按照什么去查詢,並不會解析查詢內容,對它分詞。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM