ES多條件查詢寫法舉例
場(chǎng)景:想要查詢出設(shè)備id 為 3 的所有設(shè)備上報(bào)信息,并且上報(bào)信息的開始時(shí)間或結(jié)束時(shí)間只要有一個(gè)滿足 在 某個(gè)時(shí)間段里即可。
在 Elasticsearch 中,您可以使用布爾查詢來實(shí)現(xiàn)同時(shí)滿足條件1并且滿足條件2或條件3中的一個(gè)的查詢。具體來說,您可以使用“must”子句來指定滿足條件1的查詢,使用“should”子句來指定滿足條件2或條件3中的一個(gè)的查詢,并將它們組合起來。
以下是一個(gè)示例查詢:
GET /my_index/_search
{
"query": {
"bool": {
"must": [
{ "term": { "deviceId": 3 } }
],
"should": [
{
"range": {
"startTime": {
"gte": "2023-10-11T23:12:02+08:00",
"lte": "2023-10-11T23:12:02+08:00",
"time_zone": "+08:00"
}
}
},
{
"range": {
"endTime": {
"gte": "2023-10-11T23:12:02+08:00",
"lte": "2023-10-11T23:12:02+08:00",
"time_zone": "+08:00"
}
}
}
],
"minimum_should_match": 1
}
}
}
“minimum_should_match”參數(shù)被設(shè)置為1,這意味著至少有一個(gè)“should”子句必須匹配才能返回結(jié)果。
還有另外一種寫法:
{
"query": {
"bool": {
"must": [
{
"term": {
"deviceId": 3
}
},
{
"bool": {
"should": [
{
"range": {
"startTime": {
"gte": "2023-10-11T23:12:02+08:00",
"lte": "2023-10-11T23:12:02+08:00",
"time_zone": "+08:00"
}
}
},
{
"range": {
"endTime": {
"gte": "2023-10-11T23:12:02+08:00",
"lte": "2023-10-11T23:12:02+08:00",
"time_zone": "+08:00"
}
}
}
]
}
}
]
}
}
}
具體解釋如下:
- “query”: 指定查詢語句。
- “bool”: 使用布爾查詢,實(shí)現(xiàn)多個(gè)查詢條件的組合。
- “must”: 必須匹配的查詢條件,相當(dāng)于邏輯上的"AND"。
- “term”: 匹配一個(gè)精確值的查詢。
- “deviceId”: 待匹配的字段名。
- 3: 待匹配的值。
- “bool”: 使用布爾查詢,實(shí)現(xiàn)多個(gè)查詢條件的組合。
- “should”: 至少匹配一個(gè)查詢條件,相當(dāng)于邏輯上的"OR"。
- “range”: 匹配一個(gè)數(shù)值或日期范圍內(nèi)的查詢。
- “startTime”: 待匹配的字段名。
- “endTime”: 待匹配的字段名。
- “gte”: 大于或等于(greater than or equal to)指定值。
- “lte”: 小于或等于(less than or equal to)指定值。
- “time_zone”: 指定時(shí)區(qū)。
總結(jié)
到此這篇關(guān)于ES多條件查詢的文章就介紹到這了,更多相關(guān)ES多條件查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Dubbo應(yīng)用啟動(dòng)注冊(cè)ZK獲取IP慢的原因之一
這篇文章主要介紹了解決Dubbo應(yīng)用啟動(dòng)注冊(cè)ZK獲取IP慢的原因之一,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
Java數(shù)據(jù)結(jié)構(gòu)之環(huán)形鏈表和約瑟夫問題詳解
約瑟夫(Josephus)問題是單向環(huán)形鏈表的一種體現(xiàn),也就是丟手帕問題,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之環(huán)形鏈表和約瑟夫問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
SpringBoot項(xiàng)目打成War布署在Tomcat的詳細(xì)步驟
這篇文章主要介紹了SpringBoot項(xiàng)目打成War布署在Tomcat,本文分步驟結(jié)合圖文實(shí)例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
Java動(dòng)態(tài)規(guī)劃篇之線性DP的示例詳解
這篇文章主要通過幾個(gè)例題為大家詳細(xì)介紹一些Java動(dòng)態(tài)規(guī)劃中的線性DP,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下2022-11-11
Java實(shí)現(xiàn)n位數(shù)字的全排列
今天小編就為大家分享一篇關(guān)于Java實(shí)現(xiàn)n位數(shù)字的全排列,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02

