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嗎?
就是這樣!謝謝! –