1、Maven依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<properties>
<elasticsearch.version>5.6.0</elasticsearch.version>
<log4j.version>2.7</log4j.version>
</properties>
<dependencies>
<!-- SpringBoot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Elasticsearch -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
这里SpringBoot使用的1.5.6.RELEASE版本,Elasticsearch的TransportClient是5.6.0版本,log4j是2.7版本
2、TransportClient
⑴ 概念
TransportClient是操作Elasticsearch集群的客户端API,它通过异步方式和ES集群进行交互
⑵ API
① 步骤
在application.yml中配置ES的服务地址【master的】和端口号【默认为9300】
创建Configuration配置类,使用@Configuration和@ConfigurationProperties(prefix = “配置的前缀”) 2个注解,声明属性,并提供对应的set方法
提供一个获取TransportClient的方法,并使用@Bean注解
② PreBuiltTransportClient
用于创建TransportClient,使用预先安装好的插件(可选的)
通过addTransportAddress(TransportAddress transportAddress) {}方法,添加服务传输地址。需要传递一个InetSocketTransportAddress对象
public InetSocketTransportAddress(InetAddress address, int port) {}
传入ES的服务地址和端口即可
③ Settings
用于创建TransportClient时,所配置的参数。它有一个Map属性,用于存放配置
// we use a sorted map for consistent serialization when using getAsMap()
private final Map<String, String> map = new TreeMap<>();
例如:当修改了默认的集群名称(elasticsearch)时,需要配置cluster.name ,并指定新的集群名称
⑶ 示例
【application.yml】
es:
host: ???.???.???.???
port: 9300
【配置类】
@Configuration
@ConfigurationProperties(prefix = "es")
public class MyConfig {
private String host;
private Integer port;