Sign Up

Have an account? Sign In Now

Sign In

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

Sorry, you do not have a permission to ask a question, You must login to ask question.

Forgot Password?

Need An Account, Sign Up Here
Sign InSign Up

ErrorCorner

ErrorCorner Logo ErrorCorner Logo

ErrorCorner Navigation

  • Home
  • Contact Us
  • About Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Contact Us
  • About Us
Home/ Questions/Q 822
Next
Answered
Kenil Vasani
Kenil Vasani

Kenil Vasani

  • 646 Questions
  • 567 Answers
  • 77 Best Answers
  • 26 Points
View Profile
  • 6
Kenil Vasani
Asked: December 18, 20202020-12-18T21:38:07+00:00 2020-12-18T21:38:07+00:00In: php

Elastic Search Give an error No alive nodes found in your cluster

  • 6

I am start working with elastic search.I successfully install elastic search on my server(Different from application server).But When I try to call Elatic search from my Application server it gives an error
Fatal error: Uncaught exception 'Elasticsearch\Common\Exceptions\NoNodesAvailableException' with message 'No alive nodes found in your cluster'

When I check Elastic search status it shows Active.

How can I call elastic search from my Application server to my Elastic search server.

<?php
    require 'vendor/autoload.php';
    $hosts = [
       'ip_address:9200'         // IP + Port
    ];
    $client = Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();

    $params = [
        'index' => 'my_index',
        'type' => 'my_type',
        'id' => 'my_id',
        'body' => ['testField' => 'abc']
    ];

    $response = $client->index($params);
?>

My elasticsearch.yml Settings

    # ======================== Elasticsearch Configuration =========================
    #
    # NOTE: Elasticsearch comes with reasonable defaults for most settings.
    #       Before you set out to tweak and tune the configuration, make sure you
    #       understand what are you trying to accomplish and the consequences.
    #
    # The primary way of configuring a node is via this file. This template lists
    # the most important settings you may want to configure for a production cluster.
    #
    # Please see the documentation for further information on configuration options:
    # <http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html>
    #
    # ---------------------------------- Cluster -----------------------------------
    #
    # Use a descriptive name for your cluster:
    #
     cluster.name: my-application
    #
    # ------------------------------------ Node ------------------------------------
    #
    # Use a descriptive name for the node:
    #
     node.name: node-1
    #
    # Add custom attributes to the node:
    #
    # node.rack: r1
    #
    # ----------------------------------- Paths ------------------------------------
    #
    # Path to directory where to store the data (separate multiple locations by comma):
    #
    # path.data: /path/to/data
    #
    # Path to log files:
    #
    # path.logs: /path/to/logs
    #
    # ----------------------------------- Memory -----------------------------------
    #
    # Lock the memory on startup:
    #
    # bootstrap.memory_lock: true
    #
    # Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
    # available on the system and that the owner of the process is allowed to use this limit.
    #
    # Elasticsearch performs poorly when the system is swapping the memory.
    #
    # ---------------------------------- Network -----------------------------------
    #
    # Set the bind address to a specific IP (IPv4 or IPv6):
    #
    #network.host: 0.0.0.0
    #network.bind_host: 0
    #
    # Set a custom port for HTTP:
    #
    # http.port: 9200
    #
    # For more information, see the documentation at:
    # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
    #
    # --------------------------------- Discovery ----------------------------------
    #
    # Pass an initial list of hosts to perform discovery when new node is started:
    # The default list of hosts is ["127.0.0.1", "[::1]"]
    #
    # discovery.zen.ping.unicast.hosts: ["host1", "host2"]
    #
    # Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
    #
    # discovery.zen.minimum_master_nodes: 3
    #
    # For more information, see the documentation at:
    # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
    #
    # ---------------------------------- Gateway -----------------------------------
    #
    # Block initial recovery after a full cluster restart until N nodes are started:
    #
    # gateway.recover_after_nodes: 3
    #
    # For more information, see the documentation at:
    # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>
    #
    # ---------------------------------- Various -----------------------------------
    #
    # Disable starting multiple nodes on a single system:
    #
    # node.max_local_storage_nodes: 1
    #
    # Require explicit names when deleting indices:
    #
    # action.destructive_requires_name: true

elasticsearch.yml settings which are not working

network.host: 127.0.0.1

network.host: 0

network.host: 0.0.0.0

network.host: IP_Address

network.bind_host: 0

network.bind_host: IP_Address

When I set the above settings then elasticsearch shows the failed status.

NOTE : Elastic search install on different server from my Application sever.

elasticsearchphpsearchserver
  • 1 1 Answer
  • 9 Views
  • 0 Followers
  • 0
Answer
Share
  • Facebook

    1 Answer

    • Voted
    1. Kenil Vasani

      Kenil Vasani

      • 646 Questions
      • 567 Answers
      • 77 Best Answers
      • 26 Points
      View Profile
      Best Answer
      Kenil Vasani
      2020-12-18T21:36:30+00:00Added an answer on December 18, 2020 at 9:36 pm

      I found the error.Error is coming due to space before node.name and cluster.name.Remove the space and its working fine.

      Updated elasticsearch.yml file

      # ======================== Elasticsearch Configuration =========================
      #
      # NOTE: Elasticsearch comes with reasonable defaults for most settings.
      #       Before you set out to tweak and tune the configuration, make sure you
      #       understand what are you trying to accomplish and the consequences.
      #
      # The primary way of configuring a node is via this file. This template lists
      # the most important settings you may want to configure for a production cluster.
      #
      # Please see the documentation for further information on configuration options:
      # <http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html>
      #
      # ---------------------------------- Cluster -----------------------------------
      #
      # Use a descriptive name for your cluster:
      #
      cluster.name: my-application-shakedeal
      #
      # ------------------------------------ Node ------------------------------------
      #
      # Use a descriptive name for the node:
      #
      node.name: shakedeal-1
      #
      # Add custom attributes to the node:
      #
      # node.rack: r1
      #
      # ----------------------------------- Paths ------------------------------------
      #
      # Path to directory where to store the data (separate multiple locations by comma):
      #
      # path.data: /path/to/data
      #
      # Path to log files:
      #
      # path.logs: /path/to/logs
      #
      # ----------------------------------- Memory -----------------------------------
      #
      # Lock the memory on startup:
      #
      # bootstrap.memory_lock: true
      #
      # Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
      # available on the system and that the owner of the process is allowed to use this limit.
      #
      # Elasticsearch performs poorly when the system is swapping the memory.
      #
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: 127.0.0.1
      network.bind_host: IP_ADDRESS
      #
      # Set a custom port for HTTP:
      #
      # http.port: 9200
      #
      # For more information, see the documentation at:
      # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
      #
      # --------------------------------- Discovery ----------------------------------
      #
      # Pass an initial list of hosts to perform discovery when new node is started:
      # The default list of hosts is ["127.0.0.1", "[::1]"]
      #
      # discovery.zen.ping.unicast.hosts: ["host1", "host2"]
      #
      # Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
      #
      # discovery.zen.minimum_master_nodes: 3
      #
      # For more information, see the documentation at:
      # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
      #
      # ---------------------------------- Gateway -----------------------------------
      #
      # Block initial recovery after a full cluster restart until N nodes are started:
      #
      # gateway.recover_after_nodes: 3
      #
      # For more information, see the documentation at:
      # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>
      #
      # ---------------------------------- Various -----------------------------------
      #
      # Disable starting multiple nodes on a single system:
      #
      # node.max_local_storage_nodes: 1
      #
      # Require explicit names when deleting indices:
      #
      # action.destructive_requires_name: true
      

      PHP Code

       <?php
          require 'vendor/autoload.php';
          $indexParams = [
              'index' => 'my_index',
              'body' => [
                  'settings' => [
                      'number_of_shards' => 5,
                      'number_of_replicas' => 1
                  ]
              ]
          ];
      
          $client = Elasticsearch\ClientBuilder::create()
              ->setSSLVerification(false)
              ->setHosts(["IP_ADDRESS:9200"])->build();  
          $response = ''; 
          try {
              /* Create the index */
              $response = $client->indices()->create($indexParams);
              print_r($response);
      
              print_r($response);
      
          } catch(Exception $e) {
              echo "Exception : ".$e->getMessage();
          }
          die('End : Elastic Search');
      
      ?>
      

      Success Response :

       Array
       (
          [acknowledged] => 1
       )
      
      • 4
      • Share
        Share
        • Share on Facebook
        • Share on Twitter
        • Share on LinkedIn
        • Share on WhatsApp

    You must login to add an answer.

    Forgot Password?

    Sidebar

    Ask A Question
    • Popular
    • Kenil Vasani

      SyntaxError: invalid syntax to repo init in the AOSP code

      • 5 Answers
    • Kenil Vasani

      xlrd.biffh.XLRDError: Excel xlsx file; not supported

      • 3 Answers
    • Kenil Vasani

      Homebrew fails on MacOS Big Sur

      • 3 Answers
    • Kenil Vasani

      runtimeError: package fails to pass a sanity check for numpy ...

      • 3 Answers
    • Kenil Vasani

      ERROR: torch has an invalid wheel, .dist-info directory not found

      • 2 Answers

    Explore

    • Most Answered
    • Most Visited
    • Most Voted
    • Random

    © 2020-2021 ErrorCorner. All Rights Reserved
    by ErrorCorner.com