# Syntax to specify multiple hosts using ELASTICSEARCH\_HOSTS env?

**URL:** https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306
**Category:** Kibana
**Created:** [February 27, 2020, 6:29pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306 "2020-02-27T18:29:57Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![Supermathie](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/supermathie/32/44936_2.png) [@Supermathie](https://discuss.elastic.co/u/Supermathie)
#### Post date: [February 27, 2020, 6:29pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/1 "2020-02-27T18:29:57Z")

</div>

follow-up to: [Kibana docker list multiple ES hosts](https://discuss.elastic.co/t/kibana-docker-list-multiple-es-hosts/189594)

I have tried various values for this environment variable:

```nohighlight
http://elasticsearch-1:9200,http://elasticsearch-2:9200,http://elasticsearch-3/9200

http://elasticsearch-1:9200 http://elasticsearch-2:9200 http://elasticsearch-3/9200

(http://elasticsearch-1:9200,http://elasticsearch-2:9200,http://elasticsearch-3/9200)

(http://elasticsearch-1:9200 http://elasticsearch-2:9200 http://elasticsearch-3/9200)

[http://elasticsearch-1:9200,http://elasticsearch-2:9200,http://elasticsearch-3/9200]

[http://elasticsearch-1:9200 http://elasticsearch-2:9200 http://elasticsearch-3/9200]

["http://elasticsearch-1:9200","http://elasticsearch-2:9200","http://elasticsearch-3:9200"]

- http://elasticsearch-1:9200 - http://elasticsearch-2:9200 - http://elasticsearch-3/9200

- http://elasticsearch-1:9200\n - http://elasticsearch-2:9200\n - http://elasticsearch-3/9200

```

All without success. Please, can you let us know?

Near as I can tell the correct separator is a space as it gives us this error:

```nohighlight
FATAL Error: "elasticsearch.hosts" setting was not applied. Check for spelling errors and ensure that expected plugins are installed.

```

instead of:

```nohighlight
FATAL ValidationError: child "elasticsearch" fails because [child "hosts" fails because [single value of "hosts" fails because ["hosts" must be a valid uri with a scheme matching the http|https pattern]]]

```

but still the mystery of the correct way to specify this to kibana (6.6.0) eludes me.

---

<div class="post-metadata">

### Author: ![Supermathie](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/supermathie/32/44936_2.png) [@Supermathie](https://discuss.elastic.co/u/Supermathie)
#### Post date: [February 28, 2020, 5:15pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/2 "2020-02-28T17:15:03Z")

</div>

@Aaron_Caldwell in the [other topic](https://discuss.elastic.co/t/kibana-docker-list-multiple-es-hosts/189594) you suggested:

> [@Kibana docker list multiple ES hosts](https://discuss.elastic.co/t/kibana-docker-list-multiple-es-hosts/189594/2):
>
> ```auto
> ELASTICSEARCH_HOSTS:
> - <host1>
> - <host2>
> - <host3>
> 
> ```

That syntax looks fine for `kibana.yml` but how do we express that as an environment variable? Adding an example to the actual documentation would be REALLY helpful.

---

<div class="post-metadata">

### Author: ![tiagocosta](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tiagocosta/32/40045_2.png) [@tiagocosta](https://discuss.elastic.co/u/tiagocosta)
#### Post date: [March 18, 2020, 6:38pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/3 "2020-03-18T18:38:25Z")

</div>

@Supermathie have you tried `ELASTICSEARCH_HOSTS='["http://....","http://..."]'` ?

---

<div class="post-metadata">

### Author: ![Supermathie](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/supermathie/32/44936_2.png) [@Supermathie](https://discuss.elastic.co/u/Supermathie)
#### Post date: [March 19, 2020, 5:19pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/4 "2020-03-19T17:19:49Z")

</div>

That doesn't work either:

```auto
kibana | FATAL ValidationError: child "elasticsearch" fails because [child "hosts" fails because [single value of "hosts" fails because ["hosts" must be a valid uri with a scheme matching the http|https pattern]]]

```

---

<div class="post-metadata">

### Author: ![tiagocosta](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tiagocosta/32/40045_2.png) [@tiagocosta](https://discuss.elastic.co/u/tiagocosta)
#### Post date: [March 20, 2020, 2:25am UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/5 "2020-03-20T02:25:47Z")

</div>

@Supermathie can you please be sure that you are not mistype any part of it?  
I was able to find two different places where people states that it worked as expected.

> <https://github.com/elastic/kibana/issues/42024>
>
> \*\*Kibana version:\*\* 7.2.0
> 
> \*\*Elasticsearch version:\*\* 7.2.0
> 
> \*\*Server OS ver…sion:\*\* MacOS
> 
> \*\*Browser version:\*\* N/A
> 
> \*\*Browser OS version:\*\* N/A
> 
> \*\*Original install method (e.g. download page, yum, from source, etc.):\*\* Docker
> 
> \*\*Describe the bug:\*\*
> When trying to pass an array in the \`ELASTICSEARCH\_HOSTS\` env variable I'm getting a validation error.
> 
> \*\*Steps to reproduce:\*\*
> I've tried various combinations of quotes, \`\[\` operator, spaces etc. 
> 
> \`docker run --name kibana5 -p 5605:5601 -e ELASTICSEARCH\_HOSTS='\["http://10.45.3.2:9220,http://10.45.3.1:9230"\]' -e "SERVER\_NAME=localhost" docker.elastic.co/kibana/kibana:7.1.1\`
> 
> \*\*Expected behavior:\*\*
> Container starts with an array of ELASTICSEARCH\_HOSTS
> 
> \*\*Actual behavior:\*\*
> Server crashes with log message given below. 
> 
> \*\*Provide logs and/or server output (if relevant):\*\*
> 
> \`\`\`
> ^C{"type":"log","@timestamp":"2019-07-25T20:23:11Z","tags":\["fatal","root"\],"pid":1,"message":"{ ValidationError: child \\"elasticsearch\\" fails because \[child \\"hosts\\" fails because \[\\"hosts\\" at position 0
> fails because \[\\"0\\" must be a valid uri with a scheme matching the http|https pattern\]\]\]\\n at Object.exports.process (/usr/share/kibana/node\_modules/joi/lib/errors.js:196:19)\\n at internals.Object.\_val
> idateWithOptions (/usr/share/kibana/node\_modules/joi/lib/types/any/index.js:675:31)\\n at module.exports.internals.Any.root.validate (/usr/share/kibana/node\_modules/joi/lib/index.js:146:23)\\n at Config.\_
> commit (/usr/share/kibana/src/legacy/server/config/config.js:143:35)\\n at Config.set (/usr/share/kibana/src/legacy/server/config/config.js:111:10)\\n at Config.extendSchema (/usr/share/kibana/src/legacy/
> server/config/config.js:84:10)\\n at extendConfigService (/usr/share/kibana/src/legacy/plugin\_discovery/plugin\_config/extend\_config\_service.js:45:10) name: 'ValidationError' }"}
> 
> FATAL ValidationError: child "elasticsearch" fails because \[child "hosts" fails because \["hosts" at position 0 fails because \["0" must be a valid uri with a scheme matching the http|https pattern\]\]\]
> 
> \`\`\`
> 
> \*\*Any additional context:\*\*

> [@Connecting Kibana to multiple Coordinating Nodes in docker-compose setup](https://discuss.elastic.co/t/connecting-kibana-to-multiple-coordinating-nodes-in-docker-compose-setup/199521):
>
> Hey, I am running an Elasticsearch 7.3.0 cluster via docker-compose with 3 machines that host one MDI and one Coordinating-only node each. On one machine I host Kibana as well. I want Kibana to connect to all three coordinating-nodes due to loadbalancing purposes. Therefore I specify in the environment section of the kibana service the following setting: ELASTICSEARCH\_HOSTS: "https://192.168.2.120:9201,https://192.168.2.121:9201,https://192.168.2.122:9201" However on the startup I get followi…

---

<div class="post-metadata">

### Author: ![Supermathie](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/supermathie/32/44936_2.png) [@Supermathie](https://discuss.elastic.co/u/Supermathie)
#### Post date: [March 20, 2020, 6:43pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/6 "2020-03-20T18:43:58Z")

</div>

Was support for this added in Kibana version 7? As specified in the OP I'm on 6.6.0.

---

<div class="post-metadata">

### Author: ![tiagocosta](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tiagocosta/32/40045_2.png) [@tiagocosta](https://discuss.elastic.co/u/tiagocosta)
#### Post date: [March 21, 2020, 4:36am UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/7 "2020-03-21T04:36:32Z")

</div>

@Supermathie I miss that part. I was confirming to the code and it looks like for our released docker artifacts it would only work starting on 6.6.1. Can you try with that version please?

---

<div class="post-metadata">

### Author: ![lcanas](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lcanas/32/14900_2.png) [@lcanas](https://discuss.elastic.co/u/lcanas)
#### Post date: [March 24, 2020, 4:16pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/8 "2020-03-24T16:16:19Z")

</div>

Hi!

i was looking for the same information some weeks ago. Find what works for the docker image of Kibana 6.8.6 OSS (I haven't tried the rest)

Docker compose syntax below:

```auto
    kibana:
      image: docker.elastic.co/kibana/kibana-oss:6.8.6
      environment:
        - ELASTICSEARCH_USERNAME=kibanaserver
        - ELASTICSEARCH_PASSWORD=kibanaserver
        - ELASTICSEARCH_HOSTS=["https://elasticsearch1:9200","https://elasticsearch2:9100"]
        - ELASTICSEARCH_SSL_VERIFICATIONMODE=none
      ports:
        - 5602:5601

```

Pay attention just to the variable `ELASTICSEARCH_HOSTS`. I pasted all the section to add some context.

The way the env variables are used inside the container is the following:

```auto
/usr/share/kibana/bin/../node/bin/node --no-warnings --max-http-header-size=65536 /usr/share/kibana/bin/../src/cli --cpu.cgroup.path.override=/ --cpuacct.cgroup.path.override=/ --elasticsearch.hosts=["https://elasticsearch1:9200","https://elasticsearch2:9100"] --elasticsearch.password=kibanaserver --elasticsearch.ssl.verificationMode=none --elasticsearch.username=kibanaserver

```

I hope it helps!

---

<div class="post-metadata">

### Author: ![Supermathie](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/supermathie/32/44936_2.png) [@Supermathie](https://discuss.elastic.co/u/Supermathie)
#### Post date: [March 27, 2020, 7:30pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/9 "2020-03-27T19:30:22Z")

</div>

Using `docker.elastic.co/kibana/kibana:6.6.1` all of these variants fail:

```auto
      - ELASTICSEARCH_HOSTS='http://elasticsearch-1:9200,http://elasticsearch-2:9200,http://elasticsearch-3:9200'
      - ELASTICSEARCH_HOSTS='[http://elasticsearch-1:9200,http://elasticsearch-2:9200,http://elasticsearch-3:9200]'
      - ELASTICSEARCH_HOSTS='["http://elasticsearch-1:9200","http://elasticsearch-2:9200","http://elasticsearch-3:9200"]'

```

After some more digging I realized this value works (even on 6.6.0):

```auto
["http://elasticsearch-1:9200","http://elasticsearch-2:9200","http://elasticsearch-3:9200"]

```

which (due to escaping rules) must be specified on the command line as:

```auto
ELASTICSEARCH_HOSTS='["http://elasticsearch-1:9200","http://elasticsearch-2:9200","http://elasticsearch-3:9200"]'

```

or in docker-compose.yml as:

```auto
ELASTICSEARCH_HOSTS=["http://elasticsearch-1:9200","http://elasticsearch-2:9200","http://elasticsearch-3:9200"]

```

I had been specifying it using the former in `docker-compose.yml` which won't work since the appropriate quoting for that would be:

```auto
      - 'ELASTICSEARCH_HOSTS=["http://elasticsearch-1:9200","http://elasticsearch-2:9200","http://elasticsearch-3:9200"]'

```

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [April 24, 2020, 7:40pm UTC](https://discuss.elastic.co/t/syntax-to-specify-multiple-hosts-using-elasticsearch-hosts-env/221306/10 "2020-04-24T19:40:37Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
