区别
match query在索引和查询时分词,term query在索引时候分词,在查询时候不分词。
match query是全文搜索,term query是词项搜索。
match query不是精确搜索,想要精确搜索,使用term keyword query.
例子
1 | DELETE test |
match query
1 | POST test/_search |
有结果返回。es的standard分词器会将Hello World索引数据时候,会分解成hello,world.
而match query会将content进行分词为hello,world。所以可以搜到。
1 | POST test/_search |
有结果返回。match query会将内容进行分词为hello,world,所以可以查到。
1 | POST test/_search |
无结果返回。match query keyword会将match query转换为term query,keyword搜索并不会分词,所以搜索不到。
1 | POST test/_search |
有结果返回。match query会分词,将match query转换为term query
term query
1 | POST test/_search |
无结果返回。term query不会分词,hello world查询不到,因为index时候Hello World被转换成hello,world.
1 | POST test/_search |
无结果返回。term query不会分词,数据在content被分成了hello,world.hello world查询不到,因为index时候Hello World被转换成hello,world.
1 | POST test/_search |
无结果返回,没有hello world,索引时候Hello World分解成hello,world两个词.
1 | POST test/_search |
有结果返回。精确匹配。term query的精确匹配用keyword。