spring中注入elasticsearch客户端
一、spring-impl.xml
<!-- ElasticSearch client-->
<bean id="esConf" class="com.elasticsearch.EsConf">
<constructor-arg value="$[es.ip]"/>
<constructor-arg value="$[es.clusterName]"/>
<constructor-arg value="$[es.type]"/>
<constructor-arg value="$[es.port]"/>
</bean>
二、EsConf.java
public class EsConf {
private String ips;
private String type;
private String clusterName;
private String port;
public EsConf(String ips, String type, String clusterName, String port) {
this.ips = ips;
this.type = type;
this.clusterName = clusterName;
this.port = port;
}
三、EsClientFactory
@Configuration
public class EsClientFactory {
@Autowired
private EsConf esConf;
@Bean(name="esClient")
public Client getESClient() {
Settings settings = Settings.settingsBuilder().put("cluster.name",esConf.getClusterName()).build();
Client client = TransportClient.builder().settings(settings).build();
for(String ip:esConf.getIps().split(",")) {
try {
((TransportClient) client).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip), 9300));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
return client;
}
}
四、Service
@Service
public class EsOperateServiceImpl implements EsOperateService {
@Resource(name = "esClient")
private Client client;