学习Elasticsearch的时候,使用Jest操作的时候,在测试类中导入JestClient时候报错:
@Autowired
JestClient jestClient;
报错提示:Could not autowire. No beans of ‘JestClient’ type found.
运行测试类时报错:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.atguigui.elasticsearch.Springboot03ElasticsearchApplicationTests': Unsatisfied dependency expressed through field 'jestClient'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.searchbox.client.JestClient' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
百度半天之后发现:springboot 2.3.0以后版本已经不支持自动注入JestClient了,只能手动注入,或者降低springboot版本
记录手动注入的方法:
@Test
void contextLoads() {
JestClient jestClient = getJestClient();
Article article = new Article();
article.setId(1);
article.setAuthor("好消息");
article.setTitle("zhangsan");
article.setContent("Hello World");
// 构建一个索引功能
Index index = new Index.Builder(article).index("atguigu").type("news").build();
try {
// 执行
jestClient.execute(index);
} catch (IOException e) {
e.printStackTrace();
}
}
private JestClient getJestClient() {
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig.
Builder("http://192.168.30.128:9200").
multiThreaded(true).build());
return factory.getObject();
}
连接成功