0

私は値がいくつかのidである必要がありますかnullである可能性があるクエリを(foselasticaバンドルで)書き込もうとしています。 MySQLではelasticsearch - どこのフィールドがnullです

WHERE city.id = 1 OR city.id IS NULL

私は、私が使用する必要があることを知っているが存在しない表現が、私のために働いてはいけません。何かアドバイス?

$query = new \Elastica\Query(); 

    if ($phrase) { 
     $queryString = new \Elastica\Query\QueryString($phrase); 
     $query->setQuery($queryString); 
    } 

    $filter = new \Elastica\Query\BoolQuery(); 

    $city = new \Elastica\Query\Match(); 
    $city->setFieldQuery('city.id', $cityId); 
    $filter->addShould($city); 

    $nullCity = new \Elastica\Query\Exists('city.id'); 
    $filter->addMustNot($nullCity); 

    $query->setPostFilter($filter); 
+0

読む[elasticsearchクエリではnullではなく、null値の対処](http://www.inanzzz.com/index.php/post/ioyu/dealing-with-null-and-のようなものを試してみてくださいelastic-archsearch-queriesでのnull値ではない)。 [missing](https://www.elastic.co/guide/en/elasticsearch/guide/current/_dealing_with_null_values.html)を使用する必要があります。 – BentCoder

+0

不足しているクエリがバージョン5から削除されました。「見つからない」例外が登録されていません。私は有用な例を見つけることができません。 –

答えて

0

あなたはそれに近づいています。

$query = new \Elastica\BoolQuery(); 
// ... 
$filter = new \Elastica\Query\BoolQuery(); 

$city = new \Elastica\Query\Match(); 
$city->setFieldQuery('city.id', $cityId); 
$filter->addShould($city); 

$nullCity = new BoolQuery(); 
$existQuery = new \Elastica\Query\Exists('city.id'); 
$nullCity->addMustNot($existQuery); 
$filter->addShould($nullCity); 

$query->addMust($filter); 
+0

ありがとうございますが、 '$ query'で' addMust() 'を実行できません:' Elastica \\ Query \ "クラスの\" addMust \ "という未定義のメソッドを呼び出そうとしました。' –

+0

' [クエリ]が[欠落]のために登録されました。 ' –

+0

私の悪い$クエリはBoolQueryである必要があります。 '$ filter = new \ Elastica \ Query \ BoolQuery();' – Elyass

関連する問題