SpringBoot配置ElasticsearchRestTemplate
背景
最近项目中用到了Elasticsearch,需要在SpringBoot项目上配置,网上找了一圈发现都是使用ElasticsearchTemplate
操作,官方最新的推荐是使用ElasticsearchRestTemplate
,基于HTTP协议与es交互。于是各种查资料,踩坑,在这里把一步步配置的过程记录一下。
集成
首先创建一个SpringBoot项目,添加最基本的依赖和es的依赖(SpringBoot版本为2.3.3)
1
2
3
4
5
<dependency>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>创建es配置Bean类
1
2
3
4
5
6
7
8
public class ESConfig {
public ElasticsearchRestTemplate elasticsearchRestTemplate(RestHighLevelClient client) {
return new ElasticsearchRestTemplate(client);
}
}在配置文件添加es的配置
1
2
3
4spring:
elasticsearch:
rest:
uris: http://ip:9200创建es的实体类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class UserForSearch {
private int id;
private String nickname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String toString() {
return "UserForSearch{" +
"id=" + id +
", nickname='" + nickname + '\'' +
'}';
}
}
```
5. 使用`ElasticsearchTemplate`添加,查询数据
```java
class EsService {
private ElasticsearchRestTemplate elasticsearchRestTemplate;
public void testEs() {
elasticsearchRestTemplate.delete("1", UserForSearch.class);
UserForSearch userForSearch = elasticsearchRestTemplate.get("1", UserForSearch.class);
System.out.println(userForSearch);
userForSearch = new UserForSearch();
userForSearch.setId(1);
userForSearch.setNickname("name");
elasticsearchRestTemplate.save(userForSearch);
userForSearch = elasticsearchRestTemplate.get("1", UserForSearch.class);
System.out.println(userForSearch);
}
}运行结果如下
1
2null
UserForSearch{id=1, nickname='name'}
第一次查询没有数据,输出null,然后调用save方法保存一条数据,接着查询并打印输出,刚才添加的数据成功显示。这样SpringBoot和es的配置就完成了,后面的
使用Repository也都大同小异,查找一下资料即可。