0

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

任意の提案をいただければ幸いです。

4

1 に答える 1

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))
    )
  )
);
于 2012-09-07T10:38:14.990 に答える