10

I am using docker-compose as in https://github.com/davidefiocco/dockerized-elasticsearch-indexer/blob/master/docker-compose.yml to initialize a containerized elasticsearch index.
Now, I would like to set a larger value for indices.query.bool.max_clause_count than the default setting using a elasticsearch.yml config file (this is to run some heavy queries as in Elasticsearch - set max_clause_count).

So far I tried to add in the docker-compose.yml a volume with:

services:
   elasticsearch:
      volumes:
        - ./elasticsearch/config/elasticsearch.yml

(and variations thereof) trying to point to a elasticsearch.yml file (that I would like to ship with the rest of the files) with the right max_clause_count setting, but to no avail.

Can someone point me to the right direction?

Davide Fiocco
  • 5,350
  • 5
  • 35
  • 72
  • 2
    Volumes have two parts: your local directory, and the container directory. You are trying to mount a relative path to a file to an unspecified volume; not sure what you are expecting docker to do there. You might want to read the documentation for docker, docker-compose and the readme for the official elasticsearch docker containers that should explain this pretty well. – Jilles van Gurp Apr 10 '18 at 11:25

2 Answers2

9

You can mount the host's directory containing the elasticsearch.yml into the container using

services:
   elasticsearch:
      volumes:
        - path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
Shoan
  • 4,003
  • 1
  • 26
  • 29
7

One workaround to perform that (trivial) modification to elasticsearch.yml in the container is to modify directly a relevant Dockerfile with the syntax

USER root
RUN echo "indices.query.bool.max_clause_count: 1000000" >> /usr/share/elasticsearch/config/elasticsearch.yml

so to append the desired custom value.

Davide Fiocco
  • 5,350
  • 5
  • 35
  • 72