Search code examples
scalaelasticsearchelastic4s

Elasticsearch scala elastic4s settings from property file


is there a way how to pass settings to elastic4s from property file? The following way works but it is not flexible in munltienvironment:

 val settings = ImmutableSettings.settingsBuilder().put("cluster.name","elasticsearch").build()

 val client = ElasticClient.remote(settings, "154.86.209.242" -> 9300, "153.89.219.241" -> 9300)

I tried java configuration file elasticsearch.yaml as mantioned in java doc but that doesn't work.

Any suggestion here?


Solution

  • You can do this using the same method you would for the Java client. The ImmutableSettings is a Java Client class not something that is specific to elastic4s.

    To load your properties file from the classpath, eg if you have something in src/main/resources/com/package/settings.props

    ImmutableSettings.settingsBuilder().loadFromClasspath("/com/package/mysettings.yaml")
    

    Or if you want to load from an input stream:

    ImmutableSettings.settingsBuilder().loadFromStream(myinputstream)
    

    There are other methods too, just check out the ImmutableSettings.settingsBuilder object.