ES基本查詢語法

2021-10-06 05:22:58 字數 2134 閱讀 5458

1.term主要用於精確匹配哪些值,比如數字,日期,布林值或 not_analyzed 的字串(未經分析的文字資料型別):

}2.terms 跟 term 有點類似,但 terms 允許指定多個匹配條件。 如果某個字段指定了多個值,那麼文件需要一起去做匹配:

}3.range過濾允許我們按照指定範圍查詢一批資料:}}

4.exists 和 missing 過濾可以用於查詢文件中是否包含指定欄位或沒有某個字段,類似於sql語句中的is_null條件.

}這兩個過濾只是針對已經查出一批資料來,但是想區分出某個字段是否存在的時候使用。

5.bool 過濾可以用來合併多個過濾條件查詢結果的布林邏輯,它包含一下操作符:

must :: 多個查詢條件的完全匹配,相當於 and。

must_not :: 多個查詢條件的相反匹配,相當於 not。

should :: 至少有乙個查詢條件匹配, 相當於 or。should

子句(查詢)應該出現在匹配的文件中。如果 bool查詢位於查詢上下文中並且具有mustor filter子句,則bool即使沒有should查詢匹配,文件也將匹配該查詢 。在這種情況下,這些條款僅用於影響分數。如果bool查詢是過濾器上下文 或者兩者都不存在,must或者filter至少有乙個should查詢必須與文件相匹配才能與bool查詢匹配。這種行為可以通過設定minimum_should_match引數來顯式控制 。

這些引數可以分別繼承乙個過濾條件或者乙個過濾條件的陣列:

},「must_not」: },

「should」: [},}

]}}6.match_all 查詢可以查詢到所有文件,是沒有查詢條件下的預設語句。

}此查詢常用於合併過濾條件。 比如說你需要檢索所有的郵箱,所有的文件相關性都是相同的,所以得到的_score為1.

7.match查詢是乙個標準查詢,不管你需要全文本查詢還是精確查詢基本上都要用到它。

如果你使用 match 查詢乙個全文本欄位,它會在真正查詢之前用分析器先分析match一下查詢字元:

}如果用match下指定了乙個確切值,在遇到數字,日期,布林值或者not_analyzed 的字串時,它將為你搜尋你給定的值:}}

}}match查詢只能就指定某個確切字段某個確切的值進行搜尋,而你要做的就是為它指定正確的欄位名以避免語法錯誤。

8.multi_match查詢允許你做match查詢的基礎上同時搜尋多個字段,在多個欄位中同時查乙個:

}9.bool 查詢與 bool 過濾相似,用於合併多個查詢子句。不同的是,bool 過濾可以直接給出是否匹配成功, 而bool 查詢要計算每乙個查詢子句的 _score (相關性分值)。

must:: 查詢指定文件一定要被包含。

must_not:: 查詢指定文件一定不要被包含。

should:: 查詢指定文件,有則可以為文件相關性加分。

以下查詢將會找到 title 欄位中包含 「how to make millions」,並且 「tag」 字段沒有被標為 spam。 如果有標識為 「starred」 或者發布日期為2023年之前,那麼這些匹配的文件將比同類**等級高:

},「must_not」: },

「should」: [

},}}]}

}10.短語匹配(phrase matching),當你需要尋找鄰近的幾個單詞時,你會使用match_phrase查詢:

get /my_index/my_type/_search}}

和match查詢類似,match_phrase查詢首先解析查詢字串來產生乙個詞條列表。然後會搜尋所有的詞條,

但只保留含有了所有搜尋詞條的文件,並且詞條的位置要鄰接。乙個針對短語quick fox的查詢不會匹配

我們的任何文件,因為沒有文件含有鄰接在一起的quick和box詞條。

match_phrase查詢也可以寫成型別為phrase的match查詢:

「match」:

}11.constant_score:通常當查詢乙個精確值的時候,我們不希望對查詢進行評分計算。只希望對文件進行包括或排除的計算,所以我們會使用 constant_score 查詢以非評分模式來執行 term 查詢並以一作為統一評分。

最終組合的結果是乙個 constant_score 查詢,它包含乙個 term 查詢:

get /my_store/products/_search}}

}

Es基本語法

set set new hashset set.add 3503027400038206 set.add 3503227700038105 boolquerybuilder boolquery querybuilders.boolquery boolquery.must querybuilders....

es基本語法

put 索引 型別 put 索引 型別 1 post 索引 型別 1 update delete 索引 post bulk 批量操作增刪改 必須寫在同一行 doc get 索引 型別 search 查詢所有 get 索引 型別 search get 索引 型別 1?source 字段列表 get 索...

es6 基本語法

es6規定暫時性死區和let const語句不出現變數提公升,主要是為了減少執行時錯誤,防止在變數宣告前就使用這個變數,從而導致意料之外的行為。這樣的錯誤在 es5 是很常見的,現在有了這種規定,避免此類錯誤就很容易了。總之,暫時性死區的本質就是,只要一進入當前作用域,所要使用的變數就已經存在了,但...