2017-11-02 5 views
0

検索結果をフィルタリングしたい。私は 'manuf_id'が指定されていない場合、すべてのレコードを返す必要があるかどうかを調べたいと思います。以下は私の検索クエリです。弾性検索でnullフィルタを渡す方法+ PHP

$params = [ 
      'index' => $this->client->getIndex(), 
      'type' => $this->client->getType(), 
      "from" => $from, "size" => $productPerPage, 
      'body' => [ 
      "query" => [ 
       "bool" => [ 
        "must" => [ 
        [ 
          "multi_match" => [ 
           "fields" => ["prod_name", "prod_seo_name"], 
           "type" => "phrase_prefix", 
           "query" => 'samsung' 
          ] 
        ], 
         //$conditionArr 
        [ 
          "term"=> ["manuf_id"=>null] 
        ] 
        ] 
       ] 
      ] 
      ], 
     ]; 

上記のクエリは実行されていません。私は行方不明のものがありますか?どんな助けも素晴らしいだろう。

答えて

0

とき、それは必要なあなたはこのように、場合にのみ、この条件を渡すことができます。

$params = [ 
    'index' => $this->client->getIndex(), 
    'type' => $this->client->getType(), 
    "from" => $from, "size" => $productPerPage, 
    'body' => [ 
     "query" => [ 
      "bool" => [ 
       "must" => [ 
       [ 
         "multi_match" => [ 
          "fields" => ["prod_name", "prod_seo_name"], 
          "type" => "phrase_prefix", 
          "query" => 'samsung' 
         ] 
       ], 
       ] 
      ] 
     ] 
    ], 
]; 
if ($manufId > 0) { 
    $params['body']['query']['bool']['must'][] = [ 
     'term' => ['manuf_id' => $manufId], 
    ]; 
} 
+0

クラムのように働いています。あなたはどんな参考文献も持っていますか?どのように私はAND条件を追加できますか? –

+0

もう一つの要素を '$ params ['body'] ['query'] ['bool'] ['must'] []' –