Как использовать indices_boost в FOSElasticaBundle? - PullRequest
0 голосов
/ 01 июня 2019

У меня есть этот запрос, который получает то, что мне нужно, это всего лишь пример, но он сделает это.

{
    "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 голосов
/ 02 июня 2019

Я наконец заставил это работать.

Полагаю, FOSelasticBundle еще не готов к этой опции, но есть способ добавить пользовательские параметры в запрос.

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