elasticsearch - 其中字段为空
我试图写查询(与foselastica束)其中值应该是一些id或可以为null。elasticsearch - 其中字段为空
在MySQL: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);
你已经接近它了。 试着这么做
$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);
谢谢,但是我不能在'$ query'上添加必须的':'试图调用一个名为\“addMust \”的类的未定义方法\“Elastica \\ Query \”。' –
除了我'没有[查询]注册[missing]' –
我的不好,$查询需要是BoolQuery。 '$ query = new \ Elastica \ Query \ BoolQuery();' – Elyass
阅读[在elasticsearch查询与空不空值处理(http://www.inanzzz.com/index.php/post/ioyu/dealing-with-null-and-非空值功能于elasticsearch查询)。您需要使用[missing](https://www.elastic.co/guide/en/elasticsearch/guide/current/_dealing_with_null_values.html)。 – BentCoder
缺少的查询已从版本5中删除。我没有[查询]注册[missing]异常。我找不到任何有用的例子。 –