es模糊查詢、分詞查詢、精確查詢

一:es精確查詢、模糊查詢:

es精確查詢使用WildcardQueryBuilder :精確查詢和模糊查詢的區別是被模糊的字段值是否加匹配符  *、?,*匹配任意多個,?只匹配一個;

 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//條件
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
WildcardQueryBuilder wildQueryBuilder = null;
WildcardQueryBuilder wildQueryBuilder2 = null;
 if (!StringUtils.isEmpty(param.getKeyword())) {
            wildQueryBuilder = QueryBuilders.wildcardQuery(
                    "opt_user", "*"+param.getKeyword()+"*");
        }
        if (!StringUtils.isEmpty(param.getTargetModule())) {
            wildQueryBuilder2 = QueryBuilders.wildcardQuery(
                    "target_module", "*"+param.getTargetModule()+"*");
        }
        if(wildQueryBuilder!=null){
            boolQueryBuilder.must(wildQueryBuilder);
        }
        if(wildQueryBuilder2!=null){
            boolQueryBuilder.must(wildQueryBuilder2);
        }
        sourceBuilder.query(boolQueryBuilder);

二:es分詞查詢:

es分詞查詢使用BoolQueryBuilder

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
if (!StringUtils.isEmpty(param.getAppId())) {
    boolQueryBuilder.filter(QueryBuilders.termQuery("app_id", param.getAppId()));
}
if (!StringUtils.isEmpty(param.getOperationType())) {
    boolQueryBuilder.filter(QueryBuilders.termQuery("opt_type", param.getOperationType().getValue()));
}
sourceBuilder.query(boolQueryBuilder);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章