laravel 6 +asticsearch- php 7.6 + xampp: в вашем кластере не найдено живых узлов - PullRequest
2 голосов
/ 02 марта 2020

Я использую asticsearch- php в моем приложении laravel с XAMPP.

Версии:

  • PHP: 7,3
  • Laravel: ^ 6,2
  • Elasticsearch: ^ 7,6

AppServiceProvider.php код, где я регистрирую свой пользовательский драйвер скаутов:

public function boot()
{
    $this->app->singleton('elasticsearch', function () {
        return ClientBuilder::create()
                ->setHosts([
                    'http://localhost/scout/public'
                ])
                ->build();
    });

    resolve(EngineManager::class)->extend('elasticsearch', function () {
        return new ElasticSearchEngine(
            app('elasticsearch')
        );
    });
}

Мой код пользовательской поисковой системы:

<?php 

namespace App\Search\Engines;

use Laravel\Scout\Engines\Engine;
use Laravel\Scout\Builder;
use Elasticsearch\Client;

class ElasticSearchEngine extends Engine
{
    protected $client;

    public function __construct(Client $client)
    {
        $this->client = $client;
    }

    /**
     * Update the given model in the index.
     *
     * @param  \Illuminate\Database\Eloquent\Collection  $models
     * @return void
     */
    public function update($models)
    {
        $models->each(function($model) {
            $params = [
                'index' => $model->searchableAs(),
                'type' => $model->searchableAs(),
                'id' => $model->id,
                'body' => $model->toSearchableArray()
            ];

            $this->client->index($params);
        });
    }
}

В моем случае, когда я пытаюсь запустить команду php artisan scout:import App\User Elasticsearch ошибка возврата пакета с сообщением:

Elasticsearch \ Common \ Exceptions \ NoNodesAvailableException: в вашем кластере не найдено живых узлов

enter image description here

Как мне решить мою проблему? Может, тут проблема с хостами или настройкой xampp?

1 Ответ

2 голосов
/ 02 марта 2020

Прежде всего, НЕ ПАНИ C :) Я думаю, что у вас не установлен Elasticsearch. Для установки Elasticsearch и решения вашей проблемы потребуется 5 минут.

Установка

  • Загрузите и распакуйте официальный дистрибутив Elasticsearch.
  • Выполнить bin/elasticsearch на Linux или macOS . Выполнить bin\elasticsearch.bat на Windows.
  • Выполнить curl -X GET http://localhost:9200
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...