2014-02-18 24 views
1

我只是不知道如何用我的自定義查詢與Elastica。我有一個搜索表單來查找產品,用戶可以在其中輸入名稱,選擇一個類別,一個品牌等。Elastica - 如何添加一個過濾器 - 對象術語

在我的產品映射中有一個名爲「category_id」的字段,其中包含您的類別的id可以猜測,還有另一個字段叫做「類別」,它包含一個對象。

下面是這個領域的一個例子,當我顯示所有產品不帶過濾器:

[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]); 

我檢查彈性曲線的文檔,我們可以看到setterm這個方法接受陣列():http://elastica.io/api/classes/Elastica.Filter.Term.html#method_setTerm

於是,我就沒有成功:

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

回答

0

你可以使用這樣的事情

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