區別
- match是經過analyer的,也就是說,文檔首先被分析器處理了。根據不同的分析器,分析的結果稍有不同。然后再根據分詞結果進行匹配
- term則不經過分詞,它是直接去倒排索引中查找精確的值。
PUT w4 { "mappings": { "properties": { "t1": { "type": "keyword" }, "t2": { "type": "text" } } } } PUT w4/_doc/1 { "t1": "hi xi fan", "t2": "hi xi fan" } GET w4/_search { "query": { "match": { "t2": "hi" } } } GET w4/_search { "query": { "term": { "t2": "hi xi fan" # 這個是查不到結果的因為t2本來就是text類型(默認分詞的)而term查詢的時候不會以詞之后的結果的匹配,是以精確完整的內容去匹配,所以是匹配不到的 } } } GET _analyze { "analyzer": "standard", "text": "hi xi fan" }