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