ElasticSearch(es) term查询
ES中term对搜索文本不分词,直接拿去倒排索引中匹配,你输入的是什么,就去匹配倒排索引什么,相当于SQL中的单个where条件。
非字符串查询
GET /products/_search { "query": { "term": { "proid": "1" } } }
查询产品id等于1的产品,相当于SQL中的单个where条件。
精确查询
POST /products/_search { "query": { "term": { "desc": { "value": "iPhone" } } } }
查询包含iPhone的内容,注意如果内容中包含IPHONE的内容是不会被查询出来,因为term对搜索的词不做任何处理,包括大小写转换,去除语义词等等。
terms多值
GET /products/_search { "query": { "terms": { "proid": [100,101] } } }
字段有一多个值时候,用terms关键词查询,后跟数组
term多个字段
GET /products/_search { "query": { "term": { "proid": 1000 }, "term": { "proname": "java学习网站" } } }
多个字段一起条件查询
总结
1、term 和 terms 是包含(contains) 操作,而非等值(equals) (判断)
2、不知道分词器的存在,所以不会去分词,
3、所谓的包含是文档分词结果某个分词是否相等,即文档是否包含这个分词
4、因为是在分词结果中匹配,所以大写要转换为小写,大写字母是匹配不到
ElasticSearch中term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇。一般字段只有一个值时候,用term关键词查询。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。