php elasticsearch php-5.6

php - Cliente de Elasticsearch lanzando la excepción "No se encontraron nodos vivos en su clúster"



php-5.6 (11)

Compruebe si su servidor se ejecuta con el siguiente comando.

service elasticsearch status

Tuve el mismo problema y lo solucioné.

He añadido script.disable_dynamic: true a elasticsearch.yml como se explica en el tutorial de Digitalocan https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-14-04

Entonces, el servidor elasticsearch no se inició.

Eliminé la siguiente línea de elasticsearch.yml

script.disable_dynamic: true

Estoy tratando de hacer una operación de escaneo y desplazamiento en un índice como se muestra en el example :

$client = ClientBuilder::create()->setHosts([MYESHOST])->build(); $params = [ "search_type" => "scan", // use search_type=scan "scroll" => "30s", // how long between scroll requests. should be small! "size" => 50, // how many results *per shard* you want back "index" => "my_index", "body" => [ "query" => [ "match_all" => [] ] ] ]; $docs = $client->search($params); // Execute the search $scroll_id = $docs[''_scroll_id'']; // The response will contain no results, just a _scroll_id // Now we loop until the scroll "cursors" are exhausted while (/true) { // Execute a Scroll request $response = $client->scroll([ "scroll_id" => $scroll_id, //...using our previously obtained _scroll_id "scroll" => "30s" // and the same timeout window ] ); // Check to see if we got any search hits from the scroll if (count($response[''hits''][''hits'']) > 0) { // If yes, Do Work Here // Get new scroll_id // Must always refresh your _scroll_id! It can change sometimes $scroll_id = $response[''_scroll_id'']; } else { // No results, scroll cursor is empty. You''ve exported all the data break; } }

La primera llamada API $client->search($params) ejecuta correctamente y puedo recuperar la ID de desplazamiento. Pero la API $client->scroll() falla y obtengo la excepción: "Elasticsearch / Common / Exceptions / NoNodesAvailableException No hay nodos vivos en su clúster"

Estoy usando Elasticsearch 1.7.1 y PHP 5.6.11

Por favor ayuda



Descomentar en elasticsearch.yml :

network.host:198....

Y configurado para:

127.0.0.1

Me gusta esto:

# Set the bind address to a specific IP (IPv4 or IPv6): # network.host: 127.0.0.1 # # Set a custom port for HTTP: # # http.port: 9200 #

Uso Elasticsearch 2.2 en Magento 2 en el contenedor LXC.


Descubrí que el controlador php de elasticsearch está plagado de problemas, la solución que tenía era implementar la API RESTful con curl mediante php. Todo funcionaba mucho más rápido y la depuración era mucho más fácil.


Ese error básicamente significa que no puede encontrar su clúster, probablemente debido a una mala configuración del lado del cliente o del servidor.


He tenido el mismo problema con scroll y estaba trabajando con ciertos índices pero no con otros. Debe haber sido un error en el controlador, ya que se fue después de que haya actualizado el paquete elasticsearch / elasticsearch de 2.1.3 a 2.2.0



Supongo que el ejemplo no está actualizado con la versión que está utilizando (el enlace que proporcionó es 2.0, y está utilizando el 1.7.1). Solo agregue dentro del ciclo:

try { $response = $client->scroll([ "scroll_id" => $scroll_id, //...using our previously obtained _scroll_id "scroll" => "30s" // and the same timeout window ] ); }catch (Elasticsearch/Common/Exceptions/NoNodesAvailableException $e) { break; }


Tal vez deberías tratar de hacer telnet en tu máquina telnet [your_es_host] [your_es_ip] para verificar si puedes acceder a ella.

De lo contrario, intente abrir ese puerto o deshabilite el firewall de su máquina.


Yo recomendaría usar php curl lib directamente para las consultas de búsqueda elástica. Me resulta más fácil de usar que cualquier otra lib de cliente elasticsearch, puede simular cualquier consulta utilizando cli curl y puede encontrar muchos ejemplos, documentación y discusiones en Internet.


reinicie el servicio de búsqueda elástica y configure el host de red en el "127.0.0.1" local.