1、概述
查詢所使用的 QueryBuilders來源於如下git
import static org.elasticsearch.index.query.QueryBuilders.*;
請注意,您能夠使用QueryBuilder對象上的toString()方法輕鬆打印(也稱爲調試)JSON生成的查詢。github
1.一、匹配全部
最簡單的查詢,匹配全部文檔,給它們一個_score 1.0。spring
QueryBuilder qb = matchAllQuery();
1.二、全文查詢
高級全文查詢一般用於在全文字段(如電子郵件正文)上運行全文查詢。他們瞭解如何分析被查詢的字段,並在執行以前將每一個字段的分析器(或search_analyzer)應用於查詢字符串。elasticsearch
該組中的查詢是:ui
1)匹配查詢:用於執行全文查詢的標準查詢,包括模糊匹配和短語或鄰近查詢。//查詢出包含 value 的數據 或者包含不連續的字符
QueryBuilder qb = matchQuery("field","value" );
示例:查詢:QueryBuilder qb = matchQuery("name", "張三");spa
結果調試
數據:{"address":"benjing","age":"12","name":"張三2"} 數據:{"address":"benjing","age":"12","name":"aa張三3","num":12} 數據:{"address":"benjing","age":"12","name":"張愛三","num":12} 數據:{"address":"benjing","age":"12","name":"張三3"} 數據:{"address":"benjing","age":"12","name":"李宏旭 張三3","num":12} 數據:{"address":"benjing","age":"12","name":"張四","num":12}
2)多匹配查詢:multi_match查詢,匹配查詢的多字段版本。
QueryBuilder qb = multiMatchQuery( "kimchy elasticsearch", //值 "user", "message" //字段 );
示例:查詢:QueryBuilder qb = multiMatchQuery("張三 12", "name","age");code
結果對象
數據:{"address":"benjing","age":"1","name":"張三"} 數據:{"address":"benjing","age":"12","name":"張三2"} 數據:{"address":"benjing","age":"12","name":"aa張三3","num":12} 數據:{"address":"benjing","age":"12","name":"張愛三","num":12} 數據:{"address":"benjing","age":"12","name":"張三3"} 數據:{"address":"benjing","age":"12","name":"李宏旭 張三3","num":12} 數據:{"address":"benjing","age":"12","name":"王五","num":3} 數據:{"address":"benjing","age":"12","name":"張四","num":12} 數據:{"address":"benjing","age":"12","name":"王五"}
3)common_terms查詢:一個更專業的查詢,它提供了對不常見單詞的更多偏好。
QueryBuilder qb = commonTermsQuery("field","value");
示例:查詢:QueryBuilder qb = commonTermsQuery("name", "張三");blog
結果:
數據:{"address":"benjing","age":"1","name":"張三"} 數據:{"address":"benjing","age":"12","name":"張三2"} 數據:{"address":"benjing","age":"12","name":"aa張三3","num":12} 數據:{"address":"benjing","age":"12","name":"張愛三","num":12} 數據:{"address":"benjing","age":"12","name":"張三3"} 數據:{"address":"benjing","age":"12","name":"李宏旭 張三3","num":12}
4)query_string查詢:支持緊湊的Lucene查詢字符串語法,容許您在單個查詢字符串中指定AND | OR | NOT條件和多字段搜索。僅限專家用戶。
QueryBuilder qb = queryStringQuery("+kimchy -elasticsearch"); //value
5)simple_query_string:query_string語法的更簡單,更健壯的版本,適合直接向用戶公開。
QueryBuilder qb = simpleQueryStringQuery("+kimchy -elasticsearch");//value
github:https://github.com/bjlhx15/spring-cloud-base/tree/master/service6-es