Как использовать другие типы поиска в fos elasticsearch

Я использую symfony 4 + fos elasticsearch. Этот код работает для меня:

$finder = $finder->getRepository(\App\Entity\User::class)->find($searchTerm);

какой локон

curl -XGET 'http://localhost:9200/app/user/_search' -d '{"query":{"match_all":{}}}'

or

curl -XGET 'http://localhost:9200/app/user/_search' -d '{"query":{"query_string":{"query":"a"}}}'

Я хочу использовать match-query-phrase-prefix https://www.elastic.co/guide/[...]dsl-match-query-phrase-prefix

Как это сделать в фос? Документации очень мало. Пожалуйста помоги.


person Community    schedule 18.01.2019    source источник
comment
Посмотри, найдешь ли ты что-нибудь здесь. inanzzz.com/index.php/posts/elasticsearch   -  person BentCoder    schedule 19.01.2019


Ответы (1)


FOS Elasticsearch использует клиент Elasticsearch Elastica под капотом. Используйте службу «поиск», созданную FOS Elasticsearch, чтобы запустить собственный запрос Elastica для вашего индекса:

$finder = $this->container->get('fos_elastica.finder.app.user');

$matchQuery = new \Elastica\Query\MatchPhrasePrefix();
$matchQuery->setFieldQuery('name', 'a');

$data = $finder->find($matchQuery);
person hacfi    schedule 19.01.2019
comment
Да, это то, что я хотел. - person ; 20.01.2019