2012-09-05 188 views
0

我正在使用以下PHP客戶端進行elasticsearch:https://github.com/nervetattoo/elasticsearch,但我在添加多個字段以匹配搜索查詢時遇到問題。使用elasticsearch過濾搜索結果

我想通過類型選項添加一個過濾器,如果已經設置。

我已經玩過這個語法,但是在搜索時只考慮了第一個指定的字段。

$type = ($type) ? $type : false; 

$options = array(
      'fields' => array('title', 'content', 'profile_id', 'type', 'name', 'description', 'date', 'url'), 
      'from' => 0, 
      'size' => 10, 
      'query' => array(
       ($type ? 
        array('match' => array('name' => $term, 'type' => $type)) : 
        array('match' => array('_all' => $term)) 
       ) 
      ) 
     ); 

任何建議,將不勝感激。

+0

你是什麼意思「只考慮第一個字段」?你可以說得更詳細點嗎? – javanna

回答

0

如果有人有興趣,我使用bool標誌和調整語法來解決它。

$options = array(
    'fields' => array('title', 'content', 'profile_id', 'type', 'name', 'description', 'date', 'url'), 
    'from' => 0, 
    'size' => 10, 
    'query' => array(
     ($type ? 
      array(
       'bool' => array(
        'must' => array(
         array('term' => array('_all' => $term)), 
         array('term' => array('type' => $type)) 
        ) 
      ) 
     ) : 
      array('match' => array('_all' => $term)) 
    ) 
) 
);