elasticsearch6 query 全文查询与词项查询
query
全文查询
- QueryBuilders.matchQuery(“filed”,”value”).operator(Operator.AND); // 对查询的语句进行分词,分词后的词任意一个匹配doc都能查出来
term query
查询的是词项<分词后的>(eg:Java编程思想) Java编程 term query 不能查到 分词后变成(Java 编程 思想) matchQuery能查到
- QueryBuilders.matchPhraseQuery(“field”,”value”);
对value进行分词,可以自定义分词器
,满足两个条件才能被搜到:- 分词后的所有词项都要匹配原字段
- 顺序还需要一致
- QueryBuilders.matchPhrasePrefixQuery(“field”,”value”);
与matchPhraseQuery
类似,最后一个term支持前缀匹配
eg.matchPhraseQuery
查 “hello word”matchPhrasePrefixQuery
只需要查 **”hello w”**即可 - QueryBuilders.multiMatchQuery(“value”,”field1”,”field2”); 多字段支持查询,字段可以使用通配符
eg,{"中国","tit*","wor?"}
- QueryBuilders.commonTermsQuery(“哇”,”hehe”);
通用查询,会自动分词为低频和高频项,先查低频,可以控制低频、高频出现概率eg.the word
the
就是高频 ,可以先查word
- QueryBuilders.queryStringQuery(“”);
支持lucene查询语法 - QueryBuilders.simpleQueryStringQuery(“”);
支持lucene查询语法,具有非常完善的语法查询,解析过程中出现异常不会抛错 - QueryBuilders.matchAllQuery();
查所有和不写同样效果
词项查询
- term query 词项检索
- terms query 词项检索,可以多个词项,查到一个都能匹配结果
- range query 查询范围内的
- gt 大于
- gte 大于等于
- lt 小于
- lte 小于等于
- exist query 查询会返回字段中至少有一个非空
空字符串也返回
的doc - prefix query 查询字段中给定前缀的文档
eg.{"title":"hel"}
- wildcard query 查询字段通配符
eg."{"title":"hell?/ *ell*"}
- regexp query 正则匹配查询
eg.{"title":"W[0-9].+"}
- fuzzy query 模糊查询,最接近的查询,单词拼错一个字母的时候,
消耗资源多
- type query 指定类型的文档
- ids query 查询具有指定id的文档
elasticsearch6 query 全文查询与词项查询
https://byte4sec.github.io/2018/11/13/elasticsearch6-query-全文查询与词项查询/