title: Unable to connect Kibana to Elasticsearch
body: <p>I've installed ES 7.5 and Kibana 7.5 on RHEL7, but after starting Kibana and checking the UI, I'm seeing the error, "Kibana server is not ready yet." </p>
  
  <p>Checking the Kibana log, I see that it is not properly connecting to ES. Any help is appreciated!</p>
  
  <p>Here is the output of <em>journalctl --unit kibana</em>:</p>
  
  <pre><code>Dec 11 10:03:05 mcjca033031 systemd[1]: kibana.service holdoff time over, scheduling restart.
  Dec 11 10:03:05 mcjca033031 systemd[1]: Started Kibana.
  Dec 11 10:03:05 mcjca033031 systemd[1]: Starting Kibana...
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins-system"],"pid":5320,"message":"Setting up [15] plugins: [security,licensing,code,timelion,features,spaces,translation
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","security"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["warning","plugins","security","config"],"pid":5320,"message":"Generating a random key for xpack.security.encryptionKey. To prevent s
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["warning","plugins","security","config"],"pid":5320,"message":"Session cookies will be transmitted over insecure connections. This is
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","licensing"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","code"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","timelion"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","features"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","spaces"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","translations"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:08 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:08Z","tags":["info","plugins","data"],"pid":5320,"message":"Setting up plugin"}
  Dec 11 10:03:13 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:13Z","tags":["warning","legacy-plugins"],"pid":5320,"path":"/usr/share/kibana/src/legacy/core_plugins/visualizations","message":"Skipping non-plug
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["warning","plugins","licensing"],"pid":5320,"message":"License information could not be obtained from Elasticsearch for the [data] cl
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins-system"],"pid":5320,"message":"Starting [8] plugins: [security,licensing,code,timelion,features,spaces,translations,d
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","migrations"],"pid":5320,"message":"Creating index .kibana_task_manager_1."}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","migrations"],"pid":5320,"message":"Creating index .kibana_1."}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["warning","migrations"],"pid":5320,"message":"Unable to connect to Elasticsearch. Error: [mapper_parsing_exception] No handler for ty
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["fatal","root"],"pid":5320,"message":"{ Error: [mapper_parsing_exception] No handler for type [flattened] declared on field [state]\n
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins-system"],"pid":5320,"message":"Stopping all plugins."}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","data"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","translations"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","spaces"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","features"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","timelion"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","code"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","licensing"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: {"type":"log","@timestamp":"2019-12-11T15:03:14Z","tags":["info","plugins","security"],"pid":5320,"message":"Stopping plugin"}
  Dec 11 10:03:14 mcjca033031 kibana[5320]: FATAL  [mapper_parsing_exception] No handler for type [flattened] declared on field [state] :: {"path":"/.kibana_1","query":{},"body":"{\"mappings\":{\"dynamic\":\"strict\",\"properties\":{\"
  Dec 11 10:03:14 mcjca033031 kibana[5320]: \":{\"type\":\"geo_shape\"},\"mapStateJSON\":{\"type\":\"text\"},\"layerListJSON\":{\"type\":\"text\"},\"uiStateJSON\":{\"type\":\"text\"}}},\"maps-telemetry\":{\"properties\":{\"mapsTotalCou
  Dec 11 10:03:14 mcjca033031 kibana[5320]: \":\"keyword\"},\"color\":{\"type\":\"keyword\"},\"label\":{\"type\":\"keyword\"}}},\"limit\":{\"type\":\"integer\"},\"groupBy\":{\"type\":\"keyword\"},\"filterQuery\":{\"type\":\"keyword\"},
  Dec 11 10:03:14 mcjca033031 kibana[5320]: displayValue\":{\"type\":\"text\"},\"operator\":{\"type\":\"text\"}}},\"and\":{\"properties\":{\"id\":{\"type\":\"keyword\"},\"name\":{\"type\":\"text\"},\"enabled\":{\"type\":\"boolean\"},\"
  Dec 11 10:03:14 mcjca033031 kibana[5320]: \":\"long\",\"null_value\":0},\"cluster\":{\"type\":\"long\",\"null_value\":0},\"indices\":{\"type\":\"long\",\"null_value\":0}}},\"ui_reindex\":{\"properties\":{\"close\":{\"type\":\"long\",
  Dec 11 10:03:14 mcjca033031 kibana[5320]: t\"},\"hits\":{\"type\":\"integer\"},\"kibanaSavedObjectMeta\":{\"properties\":{\"searchSourceJSON\":{\"type\":\"text\"}}},\"sort\":{\"type\":\"keyword\"},\"title\":{\"type\":\"text\"},\"vers
  Dec 11 10:03:14 mcjca033031 kibana[5320]: },\"timelion_sheet\":{\"type\":\"text\"},\"title\":{\"type\":\"text\"},\"version\":{\"type\":\"integer\"}}},\"ui-metric\":{\"properties\":{\"count\":{\"type\":\"integer\"}}}},\"_meta\":{\"mig
  Dec 11 10:03:14 mcjca033031 kibana[5320]: ",\"sample-data-telemetry\":\"7d3cfeb915303c9641c59681967ffeb4\",\"telemetry\":\"358ffaa88ba34a97d55af0933a117de4\",\"timelion-sheet\":\"9a2a2748877c7a7b582fef201ab1d4cf\",\"ui-metric\":\"0d4
  Dec 11 10:03:15 mcjca033031 systemd[1]: kibana.service: main process exited, code=exited, status=1/FAILURE
  Dec 11 10:03:15 mcjca033031 systemd[1]: Unit kibana.service entered failed state.
  Dec 11 10:03:15 mcjca033031 systemd[1]: kibana.service failed.
  
  </code></pre>
  
  <p><strong>Elasticsearch.yml</strong></p>
  
  <pre><code># ======================== 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 consult the documentation for further information on configuration options:
  # https://www.elastic.co/guide/en/elasticsearch/reference/index.html
  #
  # ---------------------------------- Cluster -----------------------------------
  #
  # Use a descriptive name for your cluster:
  #
  cluster.name: elasticsearchcluster
  #
  # ------------------------------------ Node ------------------------------------
  #
  # Use a descriptive name for the node:
  #
  node.name: mcjca033078
  #
  # Add custom attributes to the node:
  #
  #node.attr.rack: r1
  #
  # ----------------------------------- Paths ------------------------------------
  #
  # Path to directory where to store the data (separate multiple locations by comma):
  #
  path.data: /var/lib/elasticsearch
  #
  # Path to log files:
  #
  path.logs: /var/log/elasticsearch
  #
  # ----------------------------------- Memory -----------------------------------
  #
  # Lock the memory on startup:
  #
  #bootstrap.memory_lock: true
  #
  # Make sure that the heap size 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: 11.208.33.78
  #
  # Set a custom port for HTTP:
  #
  http.port: 9200
  #
  # For more information, consult the network module documentation.
  #
  # --------------------------------- Discovery ----------------------------------
  #
  # Pass an initial list of hosts to perform discovery when this node is started:
  # The default list of hosts is ["127.0.0.1", "[::1]"]
  #
  discovery.seed_hosts: ["mcjca033078", "mcjca032215", "mcjca032254"]
  #
  # Bootstrap the cluster using an initial set of master-eligible nodes:
  #
  cluster.initial_master_nodes: ["mcjca033078", "mcjca032215", "mcjca032254"]
  
  #
  # For more information, consult the discovery and cluster formation module documentation.
  #
  # ---------------------------------- Gateway -----------------------------------
  #
  # Block initial recovery after a full cluster restart until N nodes are started:
  #
  #gateway.recover_after_nodes: 3
  #
  # For more information, consult the gateway module documentation.
  #
  # ---------------------------------- Various -----------------------------------
  #
  # Require explicit names when deleting indices:
  #
  #action.destructive_requires_name: true
  </code></pre>
  
  <p><strong>Kibana.yml</strong></p>
  
  <pre><code># Kibana is served by a back end server. This setting specifies the port to use.
  server.port: 5601
  
  # Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
  # The default is 'localhost', which usually means remote machines will not be able to connect.
  # To allow connections from remote users, set this parameter to a non-loopback address.
  server.host: "mcjca033031"
  
  # Enables you to specify a path to mount Kibana at if you are running behind a proxy.
  # Use the `server.rewriteBasePath` setting to tell Kibana if it should remove the basePath
  # from requests it receives, and to prevent a deprecation warning at startup.
  # This setting cannot end in a slash.
  #server.basePath: ""
  
  # Specifies whether Kibana should rewrite requests that are prefixed with
  # `server.basePath` or require that they are rewritten by your reverse proxy.
  # This setting was effectively always `false` before Kibana 6.3 and will
  # default to `true` starting in Kibana 7.0.
  #server.rewriteBasePath: false
  
  # The maximum payload size in bytes for incoming server requests.
  #server.maxPayloadBytes: 1048576
  
  # The Kibana server's name.  This is used for display purposes.
  server.name: "mcjca033031"
  
  # The URLs of the Elasticsearch instances to use for all your queries.
  elasticsearch.hosts: ["http://mcjca033078:9200", "http://mcjca032215:9200", "http://mcjca032254:9200"]
  
  # When this setting's value is true Kibana uses the hostname specified in the server.host
  # setting. When the value of this setting is false, Kibana uses the hostname of the host
  # that connects to this Kibana instance.
  #elasticsearch.preserveHost: true
  
  # Kibana uses an index in Elasticsearch to store saved searches, visualizations and
  # dashboards. Kibana creates a new index if the index doesn't already exist.
  #kibana.index: ".kibana"
  
  # The default application to load.
  #kibana.defaultAppId: "home"
  
  # If your Elasticsearch is protected with basic authentication, these settings provide
  # the username and password that the Kibana server uses to perform maintenance on the Kibana
  # index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
  # is proxied through the Kibana server.
  #elasticsearch.username: "kibana"
  #elasticsearch.password: "pass"
  
  # Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively.
  # These settings enable SSL for outgoing requests from the Kibana server to the browser.
  #server.ssl.enabled: false
  #server.ssl.certificate: /path/to/your/server.crt
  #server.ssl.key: /path/to/your/server.key
  
  # Optional settings that provide the paths to the PEM-format SSL certificate and key files.
  # These files validate that your Elasticsearch backend uses the same key files.
  #elasticsearch.ssl.certificate: /path/to/your/client.crt
  #elasticsearch.ssl.key: /path/to/your/client.key
  
  # Optional setting that enables you to specify a path to the PEM file for the certificate
  # authority for your Elasticsearch instance.
  #elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ]
  
  # To disregard the validity of SSL certificates, change this setting's value to 'none'.
  #elasticsearch.ssl.verificationMode: full
  
  # Time in milliseconds to wait for Elasticsearch to respond to pings. Defaults to the value of
  # the elasticsearch.requestTimeout setting.
  #elasticsearch.pingTimeout: 1500
  
  # Time in milliseconds to wait for responses from the back end or Elasticsearch. This value
  # must be a positive integer.
  #elasticsearch.requestTimeout: 30000
  
  # List of Kibana client-side headers to send to Elasticsearch. To send *no* client-side
  # headers, set this value to [] (an empty list).
  #elasticsearch.requestHeadersWhitelist: [ authorization ]
  
  # Header names and values that are sent to Elasticsearch. Any custom headers cannot be overwritten
  # by client-side headers, regardless of the elasticsearch.requestHeadersWhitelist configuration.
  #elasticsearch.customHeaders: {}
  
  # Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable.
  #elasticsearch.shardTimeout: 30000
  
  # Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying.
  #elasticsearch.startupTimeout: 5000
  
  # Logs queries sent to Elasticsearch. Requires logging.verbose set to true.
  #elasticsearch.logQueries: false
  
  # Specifies the path where Kibana creates the process ID file.
  #pid.file: /var/run/kibana.pid
  
  # Enables you specify a file where Kibana stores log output.
  #logging.dest: stdout
  
  # Set the value of this setting to true to suppress all logging output.
  #logging.silent: false
  
  # Set the value of this setting to true to suppress all logging output other than error messages.
  #logging.quiet: false
  
  # Set the value of this setting to true to log all events, including system usage information
  # and all requests.
  #logging.verbose: false
  
  # Set the interval in milliseconds to sample system and process performance
  # metrics. Minimum is 100ms. Defaults to 5000.
  #ops.interval: 5000
  
  # Specifies locale to be used for all localizable strings, dates and number formats.
  # Supported languages are the following: English - en , by default , Chinese - zh-CN .
  #i18n.locale: "en"
  
  </code></pre>
  
  <p>Also, when I run <em>ss -tunlp | grep 5601</em> during Kibana startup, I am seeing Kibana service is listening on 5601. However, in between multiple automatic attempts to connect to ES, it stops listening on 5601 and <em>ss -tunlp | grep 5601</em> returns nothing.</p>