ES21-JAVA API 複合查詢

1.constant_score 查詢

2.bool 查詢

多條件查詢,當過個條件知足時返回文檔,bool查詢由一個或多個字句組成緩存

occurrence 描述
must 返回的文檔必須知足must子句的條件,而且參與計算分值
filter 【filter之前時單獨的query DSL,如今納入bool query】;子句(查詢)必須出如今匹配的文檔中。然而,不一樣於must查詢的是——它不參與分數計算。 Filter子句在過濾器上下文(filter context)中執行,這意味着score被忽略而且子句可緩存【因此filter可能更快】
should 「權限」比must/filter低。若是沒有must或者filter,有一個或者多個should子句,那麼只要知足一個就能夠返回。minimum_should_match參數定義了至少知足幾個子句。
must_not 返回的文檔必須不知足must_not定義的條件
/**
	 * 多條件查詢
	 */
	public static void boolQuery() {
		
		QueryBuilder query = QueryBuilders.boolQuery()
				.must(QueryBuilders.matchQuery("title", "董事"))//知足「董事」在「title」的分詞集合中
				.must(QueryBuilders.wildcardQuery("title", "*審*"))//知足「*審*」通配符匹配「title」
				.filter(QueryBuilders.matchQuery("author", "生物"));//知足「author」匹配「生物」
		
		SearchResponse response = getClient().prepareSearch("telegraph").setQuery(query).setSize(5).get();
		SearchHits hits = response.getHits();
		for (SearchHit searchHit : hits) {
			System.out.println(searchHit.getSourceAsString());
		}
	}

測試測試

public static void main(String[] args) {
		boolQuery();
	}

執行結果:ui

{
  "title":"董事長、3名公司高管和2名中層人員被公安機關依法審查",
  "content":"財聯社7月24日訊,長生生物公告稱,董事長及部分高管沒法正常履職,長春市長春新區公安分局對長春長生生產凍幹人用狂犬病疫苗涉嫌違法犯罪案件立案調查,將主要涉案人員公司董事長、3名公司高管和2名中層人員帶至公安機關依法審查",
  "author":"長生生物"  
}

3.dis_max查詢

4.function_score查詢

5.boosting查詢

相關文章
相關標籤/搜索