private void parseOptions() {
        this.indexNamePrefix = getString(
            keys("client.indexPrefix", "client.index"),
            defaultIndexPrefix,
            Predicates.noWhitespace(),
            Predicates.noWhitespaceMsg()
        );

        this.host = getString(
            keys("client.host"),
            "localhost",
            Predicates.noWhitespace(),
            Predicates.noWhitespaceMsg()
        );

        this.port = getInt(
            keys("client.port"),
            DEFAULT_PORT,
            Predicates.greaterThanZeroInt(),
            Predicates.greaterThanZeroMsg()
        );

        this.protocol = getString(
            keys("client.protocol"),
            DEFAULT_PROTOCOL,
            Predicates.matchesAny("http", "https"),
            Predicates.matchesAnyMsg("http", "https")
        );

        this.initialize = getBool(keys("client.initialize"), true);

        this.username = getString(
            keys("client.username"),
            null,
            Predicates.noWhitespace(),
            Predicates.noWhitespaceMsg()
        );

        this.password = getString(
            keys("client.password"),
            null,
            Predicates.anyOk(),
            null
        );

        this.timeout = getInt(
            keys("client.timeout"),
            DEFAULT_TIMEOUT_MSECS,
            PREDICATE_GTE_MINUS_ONE,
            "must be -1 or greater, where -1 is 'default', 0 is infinite,"
                + " and positive integers are milliseconds"
        );

        this.pollingTime = getLong(
            keys("client.pollingTime", "client.polling.time"),
            DEFAULT_POLLING_TIME_SECS,
            Predicates.greaterThanZeroLong(),
            Predicates.greaterThanZeroMsg()
        );
    }
Constructor.

@param options            raw options passed to component
@param defaultIndexPrefix default Elasticsearch index name prefix (e.g: myIndexPrefix-indexName)
common/es/src/main/java/io/apiman/common/es/util/ApimanEsClientOptionsParser.java