Search in sources :

Example 1 with EsIndexAdmin

use of com.b2international.index.es.admin.EsIndexAdmin in project snow-owl by b2ihealthcare.

the class EsIndexClientFactory method createClient.

@Override
public IndexClient createClient(String name, ObjectMapper mapper, Mappings mappings, Map<String, Object> settings) {
    final boolean persistent = settings.containsKey(DATA_DIRECTORY);
    final Object dataSetting = settings.getOrDefault(DATA_DIRECTORY, DEFAULT_PATH);
    final Object configSetting = settings.getOrDefault(CONFIG_DIRECTORY, DEFAULT_PATH);
    final Path dataDirectory = dataSetting instanceof Path ? (Path) dataSetting : Paths.get((String) dataSetting);
    final Path configDirectory = configSetting instanceof Path ? (Path) configSetting : Paths.get((String) configSetting);
    // generic ES cluster settings
    final String clusterName = (String) settings.getOrDefault(CLUSTER_NAME, DEFAULT_CLUSTER_NAME);
    final Object connectTimeoutSetting = settings.getOrDefault(CONNECT_TIMEOUT, DEFAULT_CONNECT_TIMEOUT);
    final Object socketTimeoutSetting = settings.getOrDefault(SOCKET_TIMEOUT, DEFAULT_SOCKET_TIMEOUT);
    final int connectTimeout = connectTimeoutSetting instanceof Integer ? (int) connectTimeoutSetting : Integer.parseInt((String) connectTimeoutSetting);
    final int socketTimeout = socketTimeoutSetting instanceof Integer ? (int) socketTimeoutSetting : Integer.parseInt((String) socketTimeoutSetting);
    final String username = (String) settings.getOrDefault(CLUSTER_USERNAME, "");
    final String password = (String) settings.getOrDefault(CLUSTER_PASSWORD, "");
    final EsClient client;
    if (settings.containsKey(CLUSTER_URL)) {
        final String clusterUrl = (String) settings.get(CLUSTER_URL);
        client = EsClient.create(new EsClientConfiguration(clusterName, clusterUrl, username, password, connectTimeout, socketTimeout));
    } else {
        // Start an embedded ES node only if a cluster URL is not set
        Node node = EsNode.getInstance(clusterName, configDirectory, dataDirectory, persistent);
        // check sysprop to force HTTP client when still using embedded mode
        if (System.getProperty("so.index.es.useHttp") != null) {
            client = EsClient.create(new EsClientConfiguration(clusterName, "http://127.0.0.1:9200", username, password, connectTimeout, socketTimeout));
        } else {
            // and use the local NodeClient to communicate via the embedded node
            client = new EsTcpClient(node.client());
        }
    }
    return new EsIndexClient(new EsIndexAdmin(client, mapper, name, mappings, settings), mapper);
}
Also used : Path(java.nio.file.Path) EsIndexAdmin(com.b2international.index.es.admin.EsIndexAdmin) EsTcpClient(com.b2international.index.es.client.tcp.EsTcpClient) Node(org.elasticsearch.node.Node) EsClient(com.b2international.index.es.client.EsClient)

Aggregations

EsIndexAdmin (com.b2international.index.es.admin.EsIndexAdmin)1 EsClient (com.b2international.index.es.client.EsClient)1 EsTcpClient (com.b2international.index.es.client.tcp.EsTcpClient)1 Path (java.nio.file.Path)1 Node (org.elasticsearch.node.Node)1