ElasticSearch6.x 基于SpringBoot 实现ElasticSearch连接功能封装分析

java哥 阅读:244 2021-03-31 17:03:20 评论:0

第一步:基于SpringBoot2.1.2,依赖ElasticSearch jar 包

<!--elasticsearch 依赖  --> 
  <dependencies> 
  		<dependency> 
			<groupId>org.springframework.boot</groupId> 
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId> 
		</dependency> 
  </dependencies>

第二步:封装ElasticSearch 连接参数实体对象(ElasticSearchConfigEntity.java)

功能描述:声明ElasticSearchConfigEntity.java 为组件,实现读取application.properties 配置文件中涉及elasticsearch 服务器连接参数。

package com.zzg.ela.entity; 
 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.stereotype.Component; 
 
/** 
 * ElasticSearch 实例化对象 
 * @author zzg 
 * 
 */ 
@Component 
public class ElasticSearchConfigEntity { 
	// 集群名称 
	@Value("${com.zzg.ela.cluster_name}") 
	private String cluster_name; 
 
	 
	// 是否开启本地存储 
	@Value("${com.zzg.ela.enable}") 
	private String enable; 
	 
	// ip地址 
	@Value("${com.zzg.ela.ip}") 
	private String ip; 
	 
	// port 地址 
	@Value("${com.zzg.ela.port}") 
	private String port; 
	 
	// set 和 get 
	public String getCluster_name() { 
		return cluster_name; 
	} 
 
	public void setCluster_name(String cluster_name) { 
		this.cluster_name = cluster_name; 
	} 
 
	public String getEnable() { 
		return enable; 
	} 
 
	public void setEnable(String enable) { 
		this.enable = enable; 
	} 
 
	public String getIp() { 
		return ip; 
	} 
 
	public void setIp(String ip) { 
		this.ip = ip; 
	} 
 
	public String getPort() { 
		return port; 
	} 
 
	public void setPort(String port) { 
		this.port = port; 
	} 
} 

第三步:application.properties 配置涉及elasticsearch 服务器相关配置参数,截图如下:

第四步:编写ElasticSearch 配置参数对象(ElasticSearchConfig.java)

功能说明:注入ElasticSearchConfigEntity对象,实例化TransportClient对象。

package com.zzg.ela.config; 
 
import java.net.InetAddress; 
import java.net.UnknownHostException; 
 
import javax.annotation.PostConstruct; 
 
import org.elasticsearch.client.transport.TransportClient; 
import org.elasticsearch.common.settings.Settings; 
import org.elasticsearch.common.transport.TransportAddress; 
import org.elasticsearch.transport.client.PreBuiltTransportClient; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
 
import com.zzg.ela.entity.ElasticSearchConfigEntity; 
 
/** 
 * ElasticSearch 配置 
 *  
 * @author zzg 
 * 
 */ 
@Configuration 
public class ElasticSearchConfig { 
	@Autowired 
	private ElasticSearchConfigEntity entity; 
 
	@PostConstruct 
	void init() { 
		System.setProperty("es.set.netty.runtime.available.processors", "false"); 
	} 
 
	/** 
	 * ela 连接实列化对象 
	 *  
	 * @return 
	 */ 
	@Bean 
	public TransportClient getTransportClient() { 
		// 9300是es的tcp服务端口 
		TransportAddress node = null; 
 
		try { 
			node = new TransportAddress(InetAddress.getByName(entity.getIp()), Integer.valueOf(entity.getPort())); 
		} catch (NumberFormatException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} catch (UnknownHostException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} 
 
		// 设置es节点的配置信息 
		Settings settings = Settings.builder().put("cluster.name", entity.getCluster_name()).build(); 
 
		// 实例化es的客户端对象 
		TransportClient client = new PreBuiltTransportClient(settings); 
		client.addTransportAddress(node); 
 
		return client; 
	} 
} 

第五步:编写ElasticSearchUtil工具类对象

功能说明:注入TransportClient, 封装elasticsearch 搜索引擎的通用操作。

@Component 
public class ElasticSearchIndexUtil { 
	// 引入 Ela 连接实列化对象 
	@Autowired 
	private TransportClient client; 
 
    /**其他功能待补充**/ 
 
}

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

排行榜
关注我们

一个IT知识分享的公众号