elasticsearch must_not子句特别适用于空字符串""作为价值

时间:2018-03-08 06:27:40

标签: python elasticsearch

基本上如标题所述。我已经确认must_not确实有效,如果我指定一个非空字符串的字符串,因为该字段必须不匹配。这有效:

query=dict(
   bool=dict(
        must_not=dict(
            term=dict(
               {"platform_base": "cats"}
            ),
        ),
    ),
),

相反,如果我想排除所有条目,并将platform_base设置为空字符串""像这样:

actual_query = dict(
     query=dict(
         bool=dict(
             must_not=dict(
                  term=dict(
                       {"platform_base": ""}
                  ),
             ),
         ),
     ),
 )

突然它不起作用,并且不应用must_not过滤器并返回将platform_base设置为""的条目。这是预期的行为吗?我怎样才能得到我想要的结果?

1 个答案:

答案 0 :(得分:0)

{
   "query" : {
       "regexp":{
           "<your_field_name_here>": ".+"
        }
    }
}  

这就搞定了