Hier Elasticsearch ist mein docker-compose.yml
konnte keine Verbindung mit PHP innerhalb Docker
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes_from:
- app
php:
image: php:7.0-fpm
expose:
- 9000
volumes_from:
- app
links:
- elastic
app:
image: php:7.0-fpm
volumes:
- .:/var/www/html
command: "true"
elastic:
image: elasticsearch:2.3
volumes:
- ./elasticsearch/data:/usr/share/elasticsearch/data
- ./elasticsearch/logs:/usr/share/elasticsearch/logs
expose:
- "9200"
ports:
- "9200:9200"
Wenn ich versuche, Elasticsearch zugreifen, indem er auf localhost:9200
geht es funktioniert.
Aber wenn ich versuche, einen Index mit PHP erstellen ich die folgende Fehlermeldung erhalten:
Fatal error: Uncaught Elasticsearch\Common\Exceptions\NoNodesAvailableException: No alive nodes found in your cluster in
Hier ist der Client-Code:
<?php
namespace App\Elasticsearch;
use Elasticsearch\ClientBuilder;
class Client
{
public static function getClient()
{
return ClientBuilder::create()
->build();
}
}
-Code ein Elasticsearch Objekt zu instanziiert:
<?php
require 'vendor/autoload.php';
use App\Elasticsearch\Client;
use App\Elasticsearch\Indices\UserIndex;
$es = Client::getClient();
Wenn ich var_dump($es)
, dumps das Elasticsearch-Client-Objekt.
Wenn ich jedoch versuche, einen Index zu erstellen, wird ein Fehler ausgegeben.
<?php
namespace App\Elasticsearch\Indices;
use App\Elasticsearch\Indices\AbstractIndex;
use Elasticsearch\Client;
class UserIndex extends AbstractIndex
{
public function __construct(Client $client)
{
$this->client = $client;
}
}
// Create User Index
$userIndex = new UserIndex($es);
var_dump($userIndex->createIndex('users'));
aktualisieren
Von enter link description here
diese Seite. Ich habe versucht,
$es = Client::getClient();
try {
// Create User Index
$userIndex = new UserIndex($es);
var_dump($userIndex->createIndex('users'));
} catch (Exception $e) {
var_dump($es->transport->getLastConnection()->getLastRequestInfo());
}
und jetzt zeigt es mir Locken Fehler d.h
["curl"] array(2) { ["error"] "Failed to connect to localhost port 9200: Connection refused" ["errno"] 7
Sieht aus wie ein Port Problem in der Tat (ein bisschen wie in https://github.com/elastic/elasticsearch-php/issues/408#issuecomment -207045443) – VonC
Auch ein bisschen wie https://github.com/elastic/elasticsearch-php/issues/425#issuecomment-231548912 – VonC
Wie greifen Sie auf das elastische von PHP? – opHASnoNAME