2015-11-28 146 views
2

目前我正在爲我當前的項目使用Elastic Search 2.0。 MySqL查詢如下,過濾器查詢:在彈性搜索中不爲空

select user_id from users where subscription_type! =「」

在這上面的查詢,我需要彈性搜索來寫,我想在彈性搜索,但它越來越 請看下面的代碼在彈性搜索

$query = array("from" => $start, 
      "size" => $recordslimit, 
      "sort" => array(array('id' => 'desc')), 
      "query" => array(
       "filtered" => array(
        "query" => array("match_all" => array()), 
        "filter" => array("bool" => array(
          'must_not' => array(
           array('term' => array('subscription_type' => '')) 
          ))) 
     ))); 

請幫助我這個情況

+0

看到我的答案也許它有幫助。提醒一下,如果您發佈您的映射和一小組文檔,以便我們能夠重現您的問題,那麼我們可以更輕鬆地爲您提供幫助。 – moliware

回答

1

我看到兩種可能的情況:

如果訂閱類型爲空或不會出現在你的文件,那麼你可以在使用missing query代替詞語查詢0子句。

另一方面,如果你想排除那些subscription_type字段保存空字符串的文檔,那麼你的查詢是正確的,但也許你的映射不是。確保subscription_type在映射中定義爲not_analyzed

+1

謝謝@moliware ..它的工作 –