在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
微信掃一掃
支付寶掃一掃