我正在使用带有https://github.com/sleimanx2/plastic的Laravel 5.2,并且有一个名为job_ads的表。 job_ads表有一个有时为null的类型列。我想搜索所有类型为null的job_ads但是如果我尝试
App\JobAd::search()->term('type', null)->sortBy("id", "ASC")->get()->totalHits();
通过php artisan tinker我得到了
Elasticsearch\Common\Exceptions\BadRequest400Exception with message 'query_parsing_exception: No value specified for term query'
我查看了elasticsearch文档,但我没有看到我的错误。我正在使用elasticsearch 2.4。
答案 0 :(得分:1)
你必须在{must}中使用exists query。它基本上是missing query(在2.2.0中不推荐使用),它查找空值。尝试以下查询。
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "type"
}
}
}
}
}
我没有使用塑料但它应该很容易转换。从documentation开始,它应该类似于查询
App\JobAd::search()->mustNot()->exists('type')->sortBy("id", "ASC")->get()->totalHits();
希望它有所帮助!