012-elasticsearch5.4.3【五】-搜索API【一】搜索匹配全部matchAllQuery、全文查詢[matchQuery、multiMatchQuery、commonTerms...

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 

相關文章
相關標籤/搜索