如何在FOSElasticaBundle中使用indexs_boost?

时间:2019-06-01 12:22:37

标签: elasticsearch foselasticabundle

我有这个查询可以满足我的需要,这只是一个例子,但是可以做到。

{
    "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();

1 个答案:

答案 0 :(得分:0)

我终于做到了。

我想FOSelasticBundle还没有准备好使用此选项,但是有一种方法可以将自定义参数添加到查询中。

$query = new \Elastica\Query($queryObject);
$indicesBoost = [
    "customer" => 3,
    "customer_contact" => 2
];
$query->setParam("indices_boost", $indicesBoost);