ElasticSearch的term查询、match查询、matchPhrase查询区别

term 查询

term 查询被用于精确值 匹配,这些精确值可能是数字、时间、布尔或者那些 not_analyzed 的字符串:

{ "term": { "age": 26 }}
{ "term": { "date": "2014-09-01" }}
{ "term": { "public": true }}
{ "term": { "tag": "full_text" }}

term 查询对于输入的文本不 分析 ,所以它将给定的值进行精确查询。

match 查询

无论你在任何字段上进行的是全文搜索还是精确查询,match 查询是你可用的标准查询。

如果你在一个全文字段上使用 match 查询,在执行查询前,它将用正确的分析器去分析查询字符串:

{ "match": { "tweet": "About Search" }}

如果在一个精确值的字段上使用它, 例如数字、日期、布尔或者一个 NOT_ANALYZED 字符串字段,那么它将会精确匹配给定的值:

{ "match": { "age": 26 }}
{ "match": { "date": "2014-09-01" }}
{ "match": { "public": true }}
{ "match": { "tag": "full_text" }}

但是在使用中发现一个问题,analyzed字段无法使用term

使用term时将无法匹配

 

matchPhrase查询

使用整个单词进行模糊查询,匹配类似mysql中like "%word%"的模糊匹配

posted @ 2019-12-19 09:48  门罗的魔术师  阅读(537)  评论(0编辑  收藏  举报