Не удалось подключиться к хосту, упасть поиск?Symfony 4 эластика / руфин клиент.докер - PullRequest
0 голосов
/ 12 октября 2018

Я начал работать с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

Спасибо заранее !!

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Вы решили свою проблему?

Вы забыли добавить имя контейнера, подобное этому имя_ контейнера: эластичный поиск И для возобновления у вас будет:

 elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
        container_name: elasticsearch
        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
0 голосов
/ 12 октября 2018

Вам необходимо установить в качестве хоста контейнер для установкиasticsearch.
Здесь localhost относится к php-fpm контейнеру, так как в нем выполняется код.

Таким образом, файл конфигурации должен быть:

Elastica\Client:
    $config:
        host: elasticsearch
        port: 9200
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...