Elastica - 如何添加过滤器 - 对象术语

时间:2014-02-18 14:38:50

标签: elasticsearch elastica

我只是不知道如何使用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 ));

1 个答案:

答案 0 :(得分:0)

你可以使用这样的东西

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