1. 程式人生 > 實用技巧 >es 全文查詢

es 全文查詢

搜尋匹配所有matchAllQuery、全文查詢[matchQuery、multiMatchQuery、commonTerms...

  • 匹配所有

最簡單的查詢,匹配所有文件,給它們一個_score 1.0。

QueryBuilder qb = matchAllQuery();

  • 匹配查詢:用於執行全文查詢的標準查詢,包括模糊匹配和短語或鄰近查詢。//查詢出包含 value 的資料 或者包含不連續的字元
QueryBuilder qb = matchQuery("field","value" );

示例:查詢:QueryBuilder qb = matchQuery("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":12}
  • 多匹配查詢:multi_match查詢,匹配查詢的多欄位版
QueryBuilder qb = multiMatchQuery(
    "kimchy elasticsearch",  //"user", "message"         //欄位
);

示例:查詢:QueryBuilder qb = multiMatchQuery("張三 12", "name","age");

結果

資料:{"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":"王五"}

  • common_terms查詢:一個更專業的查詢,它提供了對不常見單詞的更多偏好

QueryBuilder qb = commonTermsQuery("field","value");

示例:查詢:QueryBuilder qb = commonTermsQuery("name", "張三");

結果:

資料:{"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}
  • query_string查詢:支援緊湊的Lucene查詢字串語法,允許您在單個查詢字串中指定AND | OR | NOT條件和多欄位搜尋。僅限專家使用者

QueryBuilder qb = queryStringQuery("+kimchy -elasticsearch"); //value
  • simple_query_string:query_string語法的更簡單,更健壯的版本,適合直接向用戶公開

QueryBuilder qb = simpleQueryStringQuery("+kimchy -elasticsearch");//value