問題未解決!!!
我今天想做一個查詢,用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的多條件查詢應該怎么做啊——有大佬指點一下嗎~~
跪謝。