es查詢條件構(gòu)造

1.精確查詢(必須完全匹配上)

單個(gè)匹配termQuery

不分詞查詢 參數(shù)1: 字段名,參數(shù)2:字段查詢值,因?yàn)椴环衷~,所以漢字只能查詢一個(gè)字,英語是一個(gè)單詞.

QueryBuilder queryBuilder=QueryBuilders.termQuery("fieldName", "fieldlValue");

分詞查詢,采用默認(rèn)的分詞器

QueryBuilder queryBuilder2 = QueryBuilders.matchQuery("fieldName", "fieldlValue");

多個(gè)匹配

不分詞查詢,參數(shù)1: 字段名,參數(shù)2:多個(gè)字段查詢值,因?yàn)椴环衷~,所以漢字只能查詢一個(gè)字,英語是一個(gè)單詞.

QueryBuilder queryBuilder=QueryBuilders.termsQuery("fieldName", "fieldlValue1","fieldlValue2...");

分詞查詢,采用默認(rèn)的分詞器

QueryBuilder queryBuilder= QueryBuilders.multiMatchQuery("fieldlValue", "fieldName1", "fieldName2", "fieldName3");

匹配所有文件,相當(dāng)于就沒有設(shè)置查詢條件

QueryBuilder queryBuilder=QueryBuilders.matchAllQuery();

2.模糊查詢(只要包含即可)

模糊查詢常見的5個(gè)方法如下

1.常用的字符串查詢

QueryBuilders.queryStringQuery("fieldValue").field("fieldName");//左右模糊

2.常用的用于推薦相似內(nèi)容的查詢

?QueryBuilders.moreLikeThisQuery(new String[] {"fieldName"}).addLikeText("pipeidhua");//如果不指定filedName,則默認(rèn)全部,常用在相似內(nèi)容的推薦上

3.前綴查詢? 如果字段沒分詞,就匹配整個(gè)字段前綴

QueryBuilders.prefixQuery("fieldName","fieldValue");

4.fuzzy query:分詞模糊查詢,通過增加fuzziness模糊屬性來查詢,如能夠匹配hotelName為tel前或后加一個(gè)字母的文檔,fuzziness 的含義是檢索的term 前后增加或減少n個(gè)單詞的匹配查詢

QueryBuilders.fuzzyQuery("hotelName", "tel").fuzziness(Fuzziness.ONE);

5.wildcard query:通配符查詢,支持* 任意字符串;?任意一個(gè)字符

QueryBuilders.wildcardQuery("fieldName","ctr*");//前面是fieldname,后面是帶匹配字符的字符串

3.范圍查詢

閉區(qū)間查詢

QueryBuilder queryBuilder0 = QueryBuilders.rangeQuery("fieldName").from("fieldValue1").to("fieldValue2");

?//開區(qū)間查詢

QueryBuilder queryBuilder1 = QueryBuilders.rangeQuery("fieldName").from("fieldValue1").to("fieldValue2").includeUpper(false).includeLower(false);//默認(rèn)是true,也就是包含

//大于

QueryBuilder queryBuilder2 = QueryBuilders.rangeQuery("fieldName").gt("fieldValue");

//大于等于

QueryBuilder queryBuilder3 = QueryBuilders.rangeQuery("fieldName").gte("fieldValue");

//小于

QueryBuilder queryBuilder4 = QueryBuilders.rangeQuery("fieldName").lt("fieldValue");

//小于等于

QueryBuilder queryBuilder5 = QueryBuilders.rangeQuery("fieldName").lte("fieldValue");

.4.組合查詢/多條件查詢/布爾查詢

QueryBuilders.boolQuery().must();//文檔必須完全匹配條件,相當(dāng)于and

QueryBuilders.boolQuery().mustNot();//文檔必須不匹配條件,相當(dāng)于not

QueryBuilders.boolQuery().should();//至少滿足一個(gè)條件,這個(gè)文檔就符合should,相當(dāng)于or

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 term query 分詞精確查詢 QueryBuilder queryBuilder = QueryBuil...
    背麻袋的袋鼠閱讀 4,927評(píng)論 0 3
  • Lucene簡(jiǎn)介 Lucene是apache下的一個(gè)開源的全文檢索引擎工具包。 1.1全文檢索(Full-text...
    深擁_66e2閱讀 180評(píng)論 0 0
  • JavaClient 查詢ES 1、term query 分詞精確查詢,查詢hotelName 分詞后包含 hot...
    jackLee閱讀 27,652評(píng)論 0 2
  • [ElasticSearch]Java API 之 詞條查詢(Term Level Query) 1. 詞條查詢(...
    Jin110閱讀 598評(píng)論 0 0
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)、注意力、語言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會(huì)...
    Jenaral閱讀 5,989評(píng)論 0 5

友情鏈接更多精彩內(nèi)容