在ES(Elasticsearch)中,查詢之一是不等於查詢。當我們需要查詢某些值不等於給定值時,我們可以使用不等於查詢。這篇文章將深入探討ES中的不等於查詢,從不等於語法、查詢某個欄位不等於、與不等於查詢相關的概念等多個方面進行闡述。
一、不等於語法
在ES中,不等於查詢使用「!=」符號表示,也可以使用「NOT」關鍵字,其語法格式為:
{ "query": { "bool": { "must_not": [ { "term": { "field": "value" } } ] } } }
上面的查詢語句表示查詢「field」不等於「value」的所有文檔。
下面是一個完整的示例代碼:
PUT /my_index/_doc/1 { "title": "good book" } PUT /my_index/_doc/2 { "title": "bad book" } PUT /my_index/_doc/3 { "title": "average book" } GET /my_index/_search { "query": { "bool": { "must_not": [ { "term": { "title": "good" } } ] } } }
上述代碼將返回「title」欄位不等於「good」的文檔2和3。
二、查詢某個欄位不等於
在ES中,我們可以使用「bool」查詢將多個查詢條件組合成一個查詢。因此,如果我們想查詢某個欄位不等於給定值,我們可以將「term」查詢和「must_not」查詢組合使用。下面是一個示例代碼:
GET /my_index/_search { "query": { "bool": { "must": [ { "match_all": {} } ], "must_not": [ { "term": { "title": "good" } } ] } } }
上述代碼查詢了「title」欄位不等於「good」的所有文檔。
三、與不等於查詢相關的概念
1. 存在查詢
存在查詢表示查詢某個欄位是否存在值,我們可以使用「exists」查詢。下面是一個示例代碼:
GET /my_index/_search { "query": { "bool": { "must": [ {"exists": {"field": "title"}} ], "must_not": [ { "term": { "title": "good" } } ] } } }
上述代碼查詢了「title」欄位存在並且不等於「good」的所有文檔。
2. 範圍查詢
範圍查詢用於查詢某個欄位的值在一個範圍內的文檔。我們可以使用「range」查詢。下面是一個示例代碼:
GET /my_index/_search { "query": { "bool": { "must": [ {"range": {"age": {"gte": 10, "lte": 20}}} ], "must_not": [ { "term": { "title": "good" } } ] } } }
上述代碼查詢了「age」欄位在10到20之間且「title」欄位不等於「good」的所有文檔。
3. 欄位缺失查詢
欄位缺失查詢用於查詢某個欄位不存在值的文檔,我們可以使用「missing」查詢。下面是一個示例代碼:
GET /my_index/_search { "query": { "bool": { "must": [ {"missing": {"field": "age"}} ], "must_not": [ { "term": { "title": "good" } } ] } } }
上述代碼查詢了「age」欄位不存在且「title」欄位不等於「good」的所有文檔。
總結
在本文中,我們詳細探討了ES中的不等於查詢,從不等於語法、查詢某個欄位不等於、與不等於查詢相關的概念等多個方面進行了闡述。不等於查詢通常與其他查詢組合使用,以得到想要的結果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/180169.html