2
我有一些帖子数据,我使用elasticsearch搜索这些帖子的标题。然后我使用过滤器来根据类别ID和一些其他参数过滤结果。我想要做的是获得符合查询条件的所有类别的帖子,并忽略过滤器。基于查询获得分面结果
这是我迄今为止所做的。这是查询部分:
if (! empty($search))
{
$query['multi_match'] = array(
'query' => $search,
'fields' => array('title', 'title_en')
);
}
然后我采用了一些过滤器:
if (! empty($loc))
{
$filter['bool']['must'][]['geo_distance'] = array(
'distance' => $distance . 'meters',
'loc' => $loc
);
}
if (isset($category))
{
$filter['bool']['must'][]['terms'] = array(
'categories' => $category
);
}
然后我突间部分:
$facets = array(
'categories' => array(
'terms' => array(
'field' => 'categories'
)
)
);
和最后一部分:
$searchParams['body']['query']['filtered'] = array(
'query' => $query,
'filter' => $filter,
);
$searchParams['body']['facets'] = $facets;
问题是,当我申请geo_distance
或其他一些过滤器,这会影响该方面返回的内容。我只希望这个方面受到查询的影响,所以如果$search
变量返回100个结果,然后地理距离将其减少到10,那么方面应该返回100个结果中的所有类别,而不是10个。这可以使用elasticsearch吗?
就是这样!谢谢! –