1.精確查詢(必須完全匹配上)
單個(gè)匹配termQuery
不分詞查詢 參數(shù)1: 字段名,參數(shù)2:字段查詢值,因?yàn)椴环衷~,所以漢字只能查詢一個(gè)字,英語是一個(gè)單詞.
QueryBuilder queryBuilder=QueryBuilders.termQuery("fieldName", "fieldlValue");
分詞查詢,采用默認(rèn)的分詞器
QueryBuilder queryBuilder2 = QueryBuilders.matchQuery("fieldName", "fieldlValue");
多個(gè)匹配
不分詞查詢,參數(shù)1: 字段名,參數(shù)2:多個(gè)字段查詢值,因?yàn)椴环衷~,所以漢字只能查詢一個(gè)字,英語是一個(gè)單詞.
QueryBuilder queryBuilder=QueryBuilders.termsQuery("fieldName", "fieldlValue1","fieldlValue2...");
分詞查詢,采用默認(rèn)的分詞器
QueryBuilder queryBuilder= QueryBuilders.multiMatchQuery("fieldlValue", "fieldName1", "fieldName2", "fieldName3");
匹配所有文件,相當(dāng)于就沒有設(shè)置查詢條件
QueryBuilder queryBuilder=QueryBuilders.matchAllQuery();
2.模糊查詢(只要包含即可)
模糊查詢常見的5個(gè)方法如下
1.常用的字符串查詢
QueryBuilders.queryStringQuery("fieldValue").field("fieldName");//左右模糊
2.常用的用于推薦相似內(nèi)容的查詢
?QueryBuilders.moreLikeThisQuery(new String[] {"fieldName"}).addLikeText("pipeidhua");//如果不指定filedName,則默認(rèn)全部,常用在相似內(nèi)容的推薦上
3.前綴查詢? 如果字段沒分詞,就匹配整個(gè)字段前綴
QueryBuilders.prefixQuery("fieldName","fieldValue");
4.fuzzy query:分詞模糊查詢,通過增加fuzziness模糊屬性來查詢,如能夠匹配hotelName為tel前或后加一個(gè)字母的文檔,fuzziness 的含義是檢索的term 前后增加或減少n個(gè)單詞的匹配查詢
QueryBuilders.fuzzyQuery("hotelName", "tel").fuzziness(Fuzziness.ONE);
5.wildcard query:通配符查詢,支持* 任意字符串;?任意一個(gè)字符
QueryBuilders.wildcardQuery("fieldName","ctr*");//前面是fieldname,后面是帶匹配字符的字符串
3.范圍查詢
閉區(qū)間查詢
QueryBuilder queryBuilder0 = QueryBuilders.rangeQuery("fieldName").from("fieldValue1").to("fieldValue2");
?//開區(qū)間查詢
QueryBuilder queryBuilder1 = QueryBuilders.rangeQuery("fieldName").from("fieldValue1").to("fieldValue2").includeUpper(false).includeLower(false);//默認(rèn)是true,也就是包含
//大于
QueryBuilder queryBuilder2 = QueryBuilders.rangeQuery("fieldName").gt("fieldValue");
//大于等于
QueryBuilder queryBuilder3 = QueryBuilders.rangeQuery("fieldName").gte("fieldValue");
//小于
QueryBuilder queryBuilder4 = QueryBuilders.rangeQuery("fieldName").lt("fieldValue");
//小于等于
QueryBuilder queryBuilder5 = QueryBuilders.rangeQuery("fieldName").lte("fieldValue");
.4.組合查詢/多條件查詢/布爾查詢
QueryBuilders.boolQuery().must();//文檔必須完全匹配條件,相當(dāng)于and
QueryBuilders.boolQuery().mustNot();//文檔必須不匹配條件,相當(dāng)于not
QueryBuilders.boolQuery().should();//至少滿足一個(gè)條件,這個(gè)文檔就符合should,相當(dāng)于or