问题描述
由于springBoot2.6.x不再支持自动注入JestClient,直接使用@Autowired注入会报错。比较好的解决方法是在项目中添加一个jestConfig配置类,用于自动注入。以下是连接es单机与集群的配置类示例。
单机es配置
@Configuration
public class JestConfig {
@Value("${elasticsearch.jest.uris}")
private String uris;
@Value("${elasticsearch.jest.username}")
private String username;
@Value("${elasticsearch.jest.password}")
private String password;
@Bean
public JestClient jestClient(){
JestClientFactory factory = new JestClientFactory();
if(StringUtils.isBlank(username)){ //ES未设置账号密码的情况
factory.setHttpClientConfig(new HttpClientConfig
.Builder(uris) //单机es地址
.multiThreaded(true)
.build());
return factory.getObject();
}
factory.setHttpClientConfig(new HttpClientConfig
.Builder(uris) //单机es地址
.defaultCredentials(username,password) //ES的账号密码
.multiThreaded(true)
.build());
return factory.getObject();
}
}
集群es配置
@Configuration
public class JestConfig {
@Value("${elasticsearch.jest.uris}")
private String uris;
@Value("${elasticsearch.jest.username:}")
private String username;
@Value("${elasticsearch.jest.password:}")
private String password;
@Bean
public JestClient jestClient(){
String[] serverUris = uris.split(",");
JestClientFactory factory = new JestClientFactory();
if(StringUtils.isBlank(username)){ //ES未设置账号密码的情况
factory.setHttpClientConfig(new HttpClientConfig
.Builder(Arrays.asList(serverUris)) //es地址
.multiThreaded(true)
.discoveryEnabled(true) //刷新集群中可用的es列表
.build());
return factory.getObject();
}
factory.setHttpClientConfig(new HttpClientConfig
.Builder(Arrays.asList(serverUris)) //es地址
.defaultCredentials(username,password) //es的账号密码
.multiThreaded(true)
.discoveryEnabled(true)
.build());
return factory.getObject();
}
}