ES搜索引擎JAVA API QueryBuilder 基本查詢「實用版本」構造舉例


*字段名用fieldName代替,具體值用{fieldValue}代替
 
1、精確查詢(數字或字符串)
【數字】
A:單個
QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
B:批量
QueryBuilder qb1 = QueryBuilders.termsQuery("${fieldName}", "${fieldValues}");
字符串
A:單個
QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}.keyword", "${fieldValue}");
B:批量
QueryBuilder qb1 = QueryBuilders.termQuery("${fieldName}.keyword", "${fieldValue}");
 
2、數值比較
 
【大於】QueryBuilders.rangeQuery("${fieldName}.").gt(${fieldValue})
【大於等於】QueryBuilders.rangeQuery("${fieldName}.").gte(${fieldValue})
【小於】QueryBuilders.rangeQuery("${fieldName}.").lt(${fieldValue})
【小於等於】QueryBuilders.rangeQuery("${fieldName}.").lte(${fieldValue})
 
3、腳本使用
【數值計算】
String queryStr = "(doc['TICKETPRICE'].value % 50000 == 0)";
Script script = new Script(queryStr);
QueryBuilders.scriptQuery(script);
 
4、模糊查詢
 
【第一種】QueryBuilders.matchPhraseQuery("${fieldName}", "${fieldValue}")
【第二種,"${fieldValues}”的格式為 a | b | c ,可一次性查詢滿足a或者b或者c的數據】QueryBuilders.simpleQueryStringQuery("${fieldValues}").field("${fieldName}")
 
5、模糊查詢之組合多條件查詢
elasticsearch提供bool來實現這種需求
 
主要參數:
must:文檔 必須 匹配這些條件才能被包含進來。
must_not:文檔 必須不 匹配這些條件才能被包含進來。
should:如果滿足這些語句中的任意語句,將增加 _score ,否則,無任何影響。它們主要用於修正每個文檔的相關性得分。
filter:必須 匹配,但它以不評分、過濾模式來進行。這些語句對評分沒有貢獻,只是根據過濾標准來排除或包含文檔。
 
例子:
【must】
//${fieldName} = "${fieldValue}" and ${fieldName} = "${fieldValue}"
QueryBuilder qf1= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
QueryBuilder qf2= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
QueryBuilder q1 = QueryBuilders.boolQuery().must(qf1).must(q2);
 
【must not】
//${fieldName} != "${fieldValue}"
QueryBuilder q2 = QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
QueryBuilders.boolQuery().mustNot(q2);
 
【should】
//${fieldName} = "${fieldValue}" and ${fieldName} = "${fieldValue}"
QueryBuilder qf1= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
QueryBuilder qf2= QueryBuilders.termQuery("${fieldName}", "${fieldValue}");
QueryBuilder q3 = QueryBuilders.boolQuery().should(qf1).should(qf2);
 
 
陸續還會繼續分享,敬請期待~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM