Package fr.ippon.tatami.service.elasticsearch

Source Code of fr.ippon.tatami.service.elasticsearch.EmbeddedElasticsearchEngine

package fr.ippon.tatami.service.elasticsearch;

import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.node.Node;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder;
import static org.elasticsearch.node.NodeBuilder.nodeBuilder;

/**
* Transport client configuration.
*/
public class EmbeddedElasticsearchEngine implements ElasticsearchEngine {

    private final Logger log = LoggerFactory.getLogger(EmbeddedElasticsearchEngine.class);

    private Node node;

    @PostConstruct
    private void init() {
        log.info("Initializing Elasticsearch embedded cluster...");

        node = nodeBuilder()
                .loadConfigSettings(false)
                .settings(settingsBuilder().loadFromClasspath("META-INF/elasticsearch/elasticsearch-embedded.yml"))
                .node();

        // Looking for nodes configuration
        if (log.isInfoEnabled()) {
            final NodesInfoResponse nir =
                    client().admin().cluster().prepareNodesInfo().execute().actionGet();

            log.info("Elasticsearch client is now connected to the " + nir.nodes().length + " node(s) cluster named \""
                    + nir.clusterName() + "\"");
        }
    }

    @PreDestroy
    private void close() {
        log.info("Closing Elasticsearch embedded cluster");
        node.close();
    }

    public Client client() {
        return node.client();
    }
}
TOP

Related Classes of fr.ippon.tatami.service.elasticsearch.EmbeddedElasticsearchEngine

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.