区别
- 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" }