【问题标题】:Elastica - How to add a filter - object termElastica - 如何添加过滤器 - 对象术语
【发布时间】:2014-02-18 14:38:49
【问题描述】:

我只是不知道如何使用 Elastica 进行自定义查询。我有一个查找产品的搜索表单,用户可以在其中输入名称、选择类别、品牌等。

在我的产品映射中,有一个名为“category_id”的字段包含您可以猜到的类别的 id,还有另一个名为“category”的字段包含一个对象。

当我显示所有不带过滤器的产品时,此字段的示例如下:

[category] => Array
                (
                    [id] => 2
                    [name] => Laptop
                    [slug] => laptop
                    [created_at] => 2012-03-12T17:11:42+0000
                    [updated_at] => 2013-04-25T00:01:04+0000
                )

我手动添加了之前的“category_id”字段,但我没有注意到有“category”字段。为了不使我的产品映射超载,我想知道如何通过指定“类别”字段的 id 来构建查询。

这实际上是我的做法:

$elasticaFilterCategory = new \Elastica\Filter\Term();
$elasticaFilterCategory->setTerm('category_id', $category_id]);

我查看了 Elastica 的文档,我们可以看到 setTerm 方法接受 array() :http://elastica.io/api/classes/Elastica.Filter.Term.html#method_setTerm

所以我尝试了但没有成功:

$elasticaFilterCategory = new \Elastica\Filter\Term();
$elasticaFilterCategory->setTerm('category', array( "id" =>  $category_id ));

【问题讨论】:

    标签: elasticsearch elastica


    【解决方案1】:

    你可以使用这样的东西

    $elasticaFilterCategory = new \Elastica\Filter\Term();
    $elasticaFilterCategory->setTerm('category.id', $category_id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多