我有这个查询可以满足我的需要,这只是一个例子,但是可以做到。
{
"indices_boost": {
"customer": 3,
"customer_contact": 2
},
"query": {
"term" : { "all" : "google" }
}
}
问题是我想在FOSElasticaBundle中使用它,我不知道那是否有可能。我知道这不是100%相同的查询,但我只需要在某处添加“ indices_boost”即可。由于我必须使用2个索引,因此查询比平常要复杂一些。
$queryObject = new \Elastica\Query\BoolQuery();
$tagsQuery = new \Elastica\Query\Terms();
$tagsQuery->setTerms('all', ['google']);
$queryObject->addShould($tagsQuery);
$repositoryManager = $this->get('fos_elastica.index_manager');
$search = $repositoryManager->getIndex('customer')->createSearch($queryObject, 20);
$search->addIndex('customer_contact');
$search->search($queryObject, 20)->getResults();
答案 0 :(得分:0)
我终于做到了。
我想FOSelasticBundle还没有准备好使用此选项,但是有一种方法可以将自定义参数添加到查询中。
$query = new \Elastica\Query($queryObject);
$indicesBoost = [
"customer" => 3,
"customer_contact" => 2
];
$query->setParam("indices_boost", $indicesBoost);