Elasticsearch查詢問題:fliter 多條件查詢。


問題未解決!!!

 

我今天想做一個查詢,用sql來寫的話差不多是這樣的

SELECT id,name FROM table WHERE name IS NOT NULL

寫成Query DSL就是這樣的:

GET /_search
{
  "_source": ["id","name"], 
  "query": {
    "bool": {
      "filter": {
          "exists": {
            "field": "name"
        }
      }
    }
  }
}

然后查詢出來之后發現name中有類似這樣的東西:

"name":  ""

也就是說我的數據中有不為null的空字符串。因此我想加一個過濾器,就是說把sql語句改成這樣:

SELECT id,name FROM zhong WHERE name IS NOT NULL AND name!="" 

然后我發現它無法簡單的改寫成Query DSL。因為filter只支持一個條件。filter里面不能用list格式也就是[ ]這個來輸入變量組。

但是must可以。

orz

所以加條件的查詢可以直接用must來代替fliter增加search條件了。

 

 

最后我的解決方案是把sql語句改成了下面這個,來讓flter條件變成一個:

SELECT id,name FROM zhong WHERE name!=""

因為這個其實就包含了 name is not null的條件在里面了orz

我好蠢。

 

 

不過這么解決總感覺是投機取巧,因為我沒有真的使用fliter來做多條件查詢。

那么用flter的多條件查詢應該怎么做啊——有大佬指點一下嗎~~

跪謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM