特別注意:es的模糊查詢,只支持keyword;之前踩過的坑,使用正則的方式模糊查詢(QueryBuilders.regexpQuery("name.keyword", ".*" + student.getName()?+ ".*")),遇到特殊符號比如 \ 斜杠,英文的""引號,則匹配不上。
最終總結(jié)如下方法可匹配任意字符的模糊查詢,可供參考:文章來源:http://www.zghlxwxcb.cn/news/detail-506592.html
private static final Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
----------------------------------------------------------------
//簡單的例子:這里是分頁查詢,按學(xué)生名字模糊查詢,然后按添加時間倒序
public NativeSearchQuery getSearchQuery(Student student, Pageable pageRequest){
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.filter(QueryBuilders.wildcarQuery("name.keyword", "*" + this.unicodeToString(student.getName()) + "*")));
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
return nativeSearchQueryBuilder
.withQuery(queryBuilder)
.withSort(SortBuilders.fieldSort("addTime").order(SortOrder.DESC))
.withPageable(pageRequest)
.build();
}
----------------------------------------------------------------
private String unicodeToString (String str){
//將字符串轉(zhuǎn)義
str = StringEscapeUtils.escapeJava(str);
//將Unicode編碼格式轉(zhuǎn)化為中文
Match match = pattern.matcher(str);
char ch;
while(matcher.find()){
ch = (char) Integer.parseInt(matcher.group(2), 16);
str = str.replace(matcher.group(1), ch + "");
}
return str;
}
}文章來源地址http://www.zghlxwxcb.cn/news/detail-506592.html
到了這里,關(guān)于es模糊查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!