Plastic / Elasticsearch - 搜索具有空值的条目

时间:2016-10-15 14:14:28

标签: php laravel elasticsearch laravel-5.2

我正在使用带有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。

1 个答案:

答案 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();

希望它有所帮助!