use of com.couchbase.connector.config.toml.ConfigArray in project couchbase-elasticsearch-connector by couchbase.
the class ElasticsearchConfig method from.
static ImmutableElasticsearchConfig from(ConfigTable config) {
config.expectOnly("hosts", "username", "pathToPassword", "secureConnection", "clientCertificate", "aws", "bulkRequestLimits", "docStructure", "typeDefaults", "type", "rejectionLog");
final boolean secureConnection = config.getBoolean("secureConnection").orElse(false);
final AwsConfig aws = AwsConfig.from(config.getTableOrEmpty("aws"));
final ClientCertConfig clientCert = ClientCertConfig.from(config.getTableOrEmpty("clientCertificate"), "elasticsearch.clientCertificate");
// Standard ES HTTP port is 9200. Amazon Elasticsearch Service listens on ports 80 & 443.
final int defaultPort = aws.region().isEmpty() ? 9200 : secureConnection ? 443 : 80;
final ImmutableElasticsearchConfig.Builder builder = ImmutableElasticsearchConfig.builder().secureConnection(secureConnection).hosts(config.getRequiredStrings("hosts").stream().map(h -> createHttpHost(h, defaultPort, secureConnection)).collect(toList())).username(config.getString("username").orElse("")).password(readPassword(config, "elasticsearch", "pathToPassword")).bulkRequest(BulkRequestConfig.from(config.getTableOrEmpty("bulkRequestLimits"))).aws(aws).clientCert(clientCert).docStructure(DocStructureConfig.from(config.getTableOrEmpty("docStructure")));
final ConfigTable typeDefaults = config.getTableOrEmpty("typeDefaults");
typeDefaults.expectOnly("typeName", "index", "pipeline", "ignore", "ignoreDeletes", "matchOnQualifiedKey");
final TypeConfig defaultTypeConfig = ImmutableTypeConfig.builder().index(typeDefaults.getString("index").orElse(null)).type(typeDefaults.getString("typeName").orElse("_doc")).pipeline(typeDefaults.getString("pipeline").orElse(null)).ignore(typeDefaults.getBoolean("ignore").orElse(false)).ignoreDeletes(typeDefaults.getBoolean("ignoreDeletes").orElse(false)).matchOnQualifiedKey(typeDefaults.getBoolean("matchOnQualifiedKey").orElse(false)).matcher(s -> null).build();
ImmutableList.Builder<TypeConfig> typeConfigs = ImmutableList.builder();
ConfigArray types = config.getArrayOrEmpty("type");
for (int i = 0; i < types.size(); i++) {
typeConfigs.add(TypeConfig.from(types.getTable(i), types.inputPositionOf(i), defaultTypeConfig));
}
builder.types(typeConfigs.build());
builder.rejectLog(RejectLogConfig.from(config.getTableOrEmpty("rejectionLog"), defaultTypeConfig.type()));
return builder.build();
}
Aggregations