最近需要迁移以前的ElasticSearch相关代码到现在的项目,迁移过来后发现很多类方法接口要么显示过时要么直接没呢,我想是因为现在项目的SpringBoot的版本比之前要新很多,然后又不想还是用原来老版本的Spring Data ElasticSearch,所以就升级迁移新版本。
ElasticSearch配置文件
3.1.3版本
TransportClient客户端现在官方已经不推荐,而且表示以后会弃用它
@Configuration
public class ElasticsearchConfig {
@Value("${elasticsearch.cluster}")
private String cluster;
@Value("${elasticsearch.ip}")
private String ip;
@Value("${elasticsearch.port}")
private int port;
@Bean
public Client client() {
Settings settings = Settings.builder().put("cluster.name", cluster).build();
TransportClient client = new PreBuiltTransportClient(settings);
try {
client.addTransportAddress(new TransportAddress(InetAddress.getByName(ip), port));
} catch (UnknownHostException e) {
e.printStackTrace();
}
return client;
}
}
4.3.3版本
这里用的是官方推荐的RestHighLevelClient客户端,将会替代TransportClient
@Configuration
public class ElasticsearchConfig {
@Value("${elasticsearch.cluster}")
private String cluster;
@Value("${elasticsearch.ip}")
private String ip;
@Value("${elasticsearch.port}")
private int port;
@Bean
public RestHighLevelClient client() {
ClientConfiguration clientConfiguration = null;
try {
clientConfiguration = ClientConfiguration.builder()
.connectedTo(ip+":"+port)
.build();
}catch (Exception e){
e.printStackTrace();
}
return RestClients.create(clientConfiguration).rest();
}
}
@Document
3.1.3的type在4.3.3中已去掉
3.1.3版本
@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Document {
String indexName();
String type() default "";
boolean useServerConfigura