簡體   English   中英

使用Elasticsearch過濾搜索結果

[英]Filter search results with elasticsearch

我正在為Elasticsearch使用以下PHP客戶端: https : //github.com/nervetattoo/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))
                )
            )
        );

任何建議將不勝感激。

如果有人感興趣,我可以使用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))
    )
  )
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM