首先看一张ES的架构图
ES支持的客户端方式有两种,一种是基于http方式连接的restful API 端口 9200,还有一种是基于tcp方式连接的Transport方式端口 9300.
ES提供多种语言的客户端 Java、Python、.NET、SQL 和 PHP
Java REST Client [6.5] — other versions
Java API [6.5] — other versions
主要介绍下面的这种,通过Transport连接方式
- 添加依赖(pom.xml)
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.5.4</version>
</dependency>
- ES配置类
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.InetAddress;
import java.net.UnknownHostException;
@Configuration
public class ElasticSearchConfig {
@Value("${es.address}")
private String address;
@Value("${es.cluster.name}")
private String clusterName;
private TransportClient client = null;
@Bean
public TransportClient getConnect() throws UnknownHostException {
Settings settings = Settings.builder()
.put("cluster.name", clusterName).build();
client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(address), 9300));
return client;
}
}
- 注意
官方正在计划弃用TransportClient
Elasticsearch 7.0并在8.0中完全删除它。相反,您应该使用Java高级REST客户端,它执行HTTP请求而不是序列化的Java请求。该 迁移指南描述了所有迁移所需的步骤.
通过使用带有JSON请求和响应主体的低级Java REST Client,可以始终实现任何缺少的API 。
参考文章:https://www.cnblogs.com/leeSmall/p/9218779.html