我使用以下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))
)
)
);