【问题标题】:Include 'NULL' values in filter along with range filter in Elastica在过滤器中包含“NULL”值以及 Elastica 中的范围过滤器
【发布时间】:2018-07-08 15:07:50
【问题描述】:

我正在使用 Elastica,我需要创建一个过滤器来获取 NULL 值以及低于 100 的值。

目前我的代码如下所示:

$this->filter = $qb->query()->bool();
$this->filter->addShould($qb->query()->range('price', ['lte' => 100]));

它返回 price 低于 100 的数据。 我还需要获取具有 null 值的数据。 到目前为止,我尝试过:

$this->filter->addMustNot($qb->query()->exists('price')); // returns 0 items
$this->filter->addShould($qb->query()->missing('price')); // doesn't work. Gives undefined query "missing" in Facade.php

有人可以帮我解决这个问题吗?或者如何解决未定义查询“丢失”的问题或创建另一个适合我需要的过滤器。谢谢。

【问题讨论】:

    标签: php elasticsearch elastica


    【解决方案1】:

    使用相同的range() 使其按我的需要工作。 所以它看起来像这样:

    $this->filter->addMustNot($qb->query()->range('price', ['gte' => 100]));
    

    我正在使用 addMustNot,因此它会过滤与该过滤器匹配的所有值(将返回小于 100 的所有值,即使它是 null 值)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      相关资源
      最近更新 更多