2015-10-17 88 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