![](https://img.51dongshi.com/20250107/wz/18429477652.jpg)
1. 單個匹配termQuery 不分詞查詢,參數(shù)1:字段名,參數(shù)2:字段查詢值。由于不分詞,漢字只能查詢一個字,英語是一個單詞。 ```java QueryBuilder queryBuilder = QueryBuilders.termQuery("fieldName", "fieldValue"); ```2. 分詞查詢,采用默認的分詞器 ```java QueryBuilder queryBuilder2 = QueryBuilders.matchQuery("fieldName", "fieldValue"); ```3. 多個匹配 不分詞查詢,參數(shù)1:字段名,參數(shù)2:多個字段的查詢值。因為不分詞,所以漢字只能查詢一個字,英語是一個單詞。 ```java QueryBuilder queryBuilder = QueryBuilders.termsQuery("fieldName", "fieldValue1", "fieldValue2..."); ``` 分詞查詢,采用默認的分詞器 ```java QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("fieldValue", "fieldName1", "fieldName2", "fieldName3"); ```4. 匹配所有文件 ```java QueryBuilder queryBuilder = QueryBuilders.matchAllQuery(); ```5. 模糊查詢常見的5種方法 1. 常用的字符串查詢```javaQueryBuilders.queryStringQuery("fieldValue").field("fieldName"); // 左右模糊``` 2. 常用空格的用于推薦相似內(nèi)容的查詢```javaQueryBuilders.moreLikeThisQuery(new String[] {"fieldName"}).addLikeText("similarContent"); // 如果不指定fieldName,則默認全部,常用在相似內(nèi)容的推薦上``` 3. 前綴查詢?nèi)绻侄螞]分詞,就匹配整個字段前綴```javaQueryBuilders.prefixQuery("fieldName", "fieldValue");``` 4. fuzzy query: 分詞模糊查詢,通過增加fuzziness模糊屬性來查詢```javaQueryBuilders.fuzzyQuery("fieldName", "fuzzyValue").fuzziness(Fuzziness.ONE);``` 5. wildcard query: 通配符查詢,支持* 任意字符串;?任意一個字符```javaQueryBuilders.wildcardQuery("fieldName", "pattern*"); // 前面是fieldName,后面是帶匹配字符的字符串```6. 閉區(qū)間查詢 ```java QueryBuilder queryBuilder0 = QueryBuilders.rangeQuery("fieldName").from("startValue").to("endValue"); ```7. 開區(qū)間查詢 ```java QueryBuilder queryBuilder1 = QueryBuilders.rangeQuery("fieldName").from("startValue").to("endValue").includeUpper(false).includeLower(false); // 默認是true,也就是包含 ``` - 大于```javaQueryBuilder queryBuilder2 = QueryBuilders.rangeQuery("fieldName").gt("value");``` - 大于等于```javaQueryBuilder queryBuilder3 = QueryBuilders.rangeQuery("fieldName").gte("value");``` - 小于```javaQueryBuilder queryBuilder4 = QueryBuilders.rangeQuery("fieldName").lt("value");``` - 小于等于```javaQueryBuilder queryBuilder5 = QueryBuilders.rangeQuery("fieldName").lte("value");```8. Bool查詢 - 文檔必須完全匹配條件,相當于AND```javaQueryBuilders.boolQuery().must();``` - 文檔必須不匹配條件,相當于NOT```javaQueryBuilders.boolQuery().mustNot();``` - 至少滿足一個條件,這個文檔就符合SHOULD,相當于OR```javaQueryBuilders.boolQuery().should();```