Spring Boot 访问 Elasticsearch

Elasticsearch 分布式的全文搜索引擎,它使用的是标准的 RESTful 风格的 API 和 JSON。本文演示如何通过 Spring Boot 对它的内容进行访问。

Spring 框架中提供了 Spring Boot Data Elasticsearch 组件,可以方便的,以 Repository 的风格来访问 Elasticsearch。

安装 Elasticsearch

可以使用 Docker 进行安装和运行,可参考 在Docker中使用ElasticSearch服务器

新建 Spring Boot 项目

新建一个 Spring Boot 的项目,在选择依赖时选择 Elasticsearch, Web, Lombok。如果在已经存在的项目中,可以在 pom.xml 文件中加入以下的依赖:

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

构建实体类

在 model 包中,新建一个名为 TodoBean 的类,代码如下:

1
2
3
4
5
6
7
8
9
10
11
@Data
@Document(indexName = "todo", type = "java")
public class TodoBean {

@Id
private String id;

private String title;

private String desc;
}

建立数据访问类

在 repository 中新建名为: TodoRepository 的接口:

1
2
3
4

@Repository
public interface TodoRepository extends ElasticsearchRepository<TodoBean, String> {
}

构建一个配置类:

在 config 包中新建名为: ElasticsearchConfig 的类,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Configuration
public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {

@Override
@Bean
public RestHighLevelClient elasticsearchClient() {

final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo("localhost:9200") //
.build();

return RestClients.create(clientConfiguration).rest();
}
}

新建Api类

在 api 包中,新建名为: TodoApi 的类,代码如下:

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
@RestController
@RequestMapping("/todo")
public class TodoApi {

@Autowired
private TodoRepository todoRepository;

@PostMapping("/append")
public ApiResult append(@RequestBody TodoBean todoBean) {

ApiResult res = new ApiResult();

todoRepository.save(todoBean);

res.setSucc(true);

return res;
}

@GetMapping
public ApiResult all() {

ApiResult res = new ApiResult();
Iterable<TodoBean> iterable = todoRepository.findAll();
List<TodoBean> list = new ArrayList<>();
iterable.forEach(list::add);

res.setData(list);
res.setSucc(true);

return res;
}
}

观察结果

启动应用,通过 append 链接添加数据,并通过 get 方法返回数据。

本文标题:Spring Boot 访问 Elasticsearch

文章作者:晨星

发布时间:2019年12月29日 - 08:12

最后更新:2020年05月28日 - 16:05

原始链接:https://www.mls-tech.info/java/springboot-access-elasticsearch/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。