Configuration example of Elastic Search based on spring data

Configuration example of Elastic Search based on spring data


import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;

import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

import com.xxx.cms.config.props.EsProps;
xxx
@Configuration
@EnableElasticsearchRepositories(
		basePackages={"com.xxx.cms.elasticsearch.repositories"}
		)
public class ElasticSearchConfig {

	private Logger logger = LoggerFactory.getLogger(getClass());
	
	@Autowired
	Environment env;
	
	@Bean
    public ElasticsearchOperations elasticsearchTemplate() {
        return new ElasticsearchTemplate(elasticsearchClient());
    }
	
	@Bean
	public EsProps esProps () {
		
		EsProps esProps = new EsProps ();
		esProps.setInit(Boolean.valueOf(env.getProperty("hs.cms.srv.es.init")));
		return esProps;
	}
	
	@Bean
	public Client elasticsearchClient(){
		
		String esNodes = env.getProperty("hs.cms.srv.es.cluster.nodes"),
				clusterName = env.getProperty("hs.cms.srv.es.cluster.name");
		ArrayList<Pair<String, Integer>> nodePairs = new ArrayList<>();
		for (String nodeStr : esNodes.split(",")) {
			
			String[] nodeSpliArr = nodeStr.split(":");
			Pair<String, Integer> pair = new ImmutablePair<>(nodeSpliArr[0], Integer.valueOf(nodeSpliArr[1]));
			nodePairs.add(pair);
		}
		
		Settings settings = Settings.settingsBuilder()
                .put("cluster.name", clusterName)
                .build();
		TransportClient client = TransportClient.builder()
                .settings(settings)
                .build();
		for (Pair<String, Integer> pair : nodePairs) {
			
			try {
				client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(pair.getLeft()), pair.getRight()));
			} catch (UnknownHostException e) {
				
				logger.error("Error initializing Es configuration", e);
				return null;
			}
		}
		return client;
	}
	
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326166106&siteId=291194637