2015-10-17 86 views
0

我是新的OData services.I已经写了一个查询来检索具有空值的特定字段。我在OData中构建查询并将其传递到弹性搜索以检索数据。但查询似乎不工作。实现这一OData服务与弹性搜索

The query is as follows: 
$filter=assignedToEM eq null. 
I have also tried giving as: $filter=assignedToEM eq 'null' 

The query has been built as : 
{ 
"from" : 0, 
"size" : 15, 
"query":{ 
     "bool" : { 
      "must_not" : { 
        "term" : { 
         "assignedToEM" : "null" 
           } 
         } 
       } 
      } 
} 
In elastic search schema,The not_null value for assignedToEM is given as "_null_". 

It would be really helpful if i get a solution for this as soon as possible. 
Thanks. 
+0

得到依赖关系,因为没有找到答案。 我认为查询将是$ filter = assignedToEM eq null 并且您可以构建包含缺少字段的ES查询 https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl- missing-filter.html – LMK

回答

0

一种方法是创建一个具有特殊_missing_字段名称query_string query代替,就像这样:

{ 
    "from": 0, 
    "size": 15, 
    "query": { 
     "query_string": { 
      "query": "_missing_:assignedToEM" 
     } 
    } 
} 

还是什么也应努力是使用NOT操作是这样的:

{ 
    "from": 0, 
    "size": 15, 
    "query": { 
     "query_string": { 
      "query": "NOT(assignedToEM:*)" 
     } 
    } 
} 
+0

如果我错了,请纠正我。丢失和存在过滤器用于弹性搜索的权利?由于查询建立在OData端,因此可以使用相同的过滤器吗? – Nilafur

+0

我从你的问题中了解到,你想将一个OData'eq null'过滤器“翻译”为相应的Elasticsearch过滤器。我的建议确实如此。 – Val

+0

@尼拉富尔有没有这样的运气? – Val

0

使用Olastic - 用于Elasticsearch的OData服务的开源实现。
您可以使用消息来源作为示例或从maven