Я начал работать сasticsearch 2 дня назад.все в порядке, чтобы проиндексировать и отправить документы на сервер Flexiblesearch.Но я не могу запросить их с помощью astica / ruflin клиента.
Я работаю над Symfony 4 и хочу реализовать панель поиска для поиска статей.
Не понимаю, что не так, потому что я создал команду для заполнения индекса, и она работает.Я могу сделать запрос на kibana или на localhost: 9200 / {index} / _ search.
Я запускаю это с помощью docker, веб-сервер nginx и использую php-fpm-7.2,
Когда я пытаюсь сделать запрос, возникает ошибка: Не удалось подключиться к хосту, Elasticsearch down?
Вот код:
docker-compose.yml:
webserver:
image: nginx:alpine
container_name: docker-symfony4-webserver
working_dir: /application
volumes:
- .:/application
- ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8000:80"
php-fpm:
build: phpdocker/php-fpm
container_name: docker-symfony4-php-fpm
working_dir: /application
volumes:
- .:/application
- ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
environment:
- cluster.name=demo
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- transport.host=127.0.0.1
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200:9200
Контроллер:
/**
* @Route("/_search", methods={"GET"}, name="blog_search")
*/
public function search(Request $request, Client $client): Response
{
if (!$request->isXmlHttpRequest()) {
return $this->render('blog/search.html.twig');
}
$query = $request->query->get('q', '');
$limit = $request->query->get('l', 10);
$match = new MultiMatch();
$match->setQuery($query);
$match->setFields(["title^4", "summary", "content", "author"]);
$bool = new BoolQuery();
$bool->addMust($match);
$elasticaQuery = new Query($bool);
$elasticaQuery->setSize($limit);
$foundPosts = $client->getIndex('blog')->search($elasticaQuery);
$results = [];
foreach ($foundPosts as $post) {
$results[] = $post->getSource();
}
return $this->json($results);
}
services.yaml:
Elastica\Client:
$config:
host: localhost
Спасибо заранее !!