springboot整合ElasticsearchClient ,实现sql查询es数据
时间: 2023-05-26 10:01:49 浏览: 263
1. 添加依赖
在 `pom.xml` 文件中添加 Elasticsearch 客户端依赖:
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
</dependencies>
```
2. 配置 Elasticsearch 客户端
在 `application.yml` 文件中添加相关配置:
```yml
spring:
elasticsearch:
rest:
uris: http://localhost:9200
username: elastic
password: changeme
```
3. 创建实体类
创建一个实体类,用于映射 Elasticsearch 数据库中的文档:
```java
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Document(indexName = "my_index", type = "my_type")
public class MyEntity {
@Id
private String id;
@Field(type = FieldType.Text)
private String name;
@Field(type = FieldType.Integer)
private Integer age;
}
```
4. 创建 Repository 接口
创建一个继承自 ElasticsearchRepository 的 Repository 接口,用于查询 Elasticsearch 数据库:
```java
public interface MyEntityRepository extends ElasticsearchRepository<MyEntity, String> {
@Query("{\"bool\": {\"must\": [{\"match\": {\"name\": \"?0\"}}]}}")
List<MyEntity> findByName(String name);
}
```
其中,@Query 注解用于定义 Elasticsearch 查询语句。
5. 编写 Controller
编写一个 Controller 类,用于处理 HTTP 请求:
```java
@RestController
@RequestMapping("/my-entity")
public class MyEntityController {
@Autowired
private MyEntityRepository repository;
@GetMapping("/{name}")
public List<MyEntity> findByName(@PathVariable("name") String name) {
return repository.findByName(name);
}
}
```
6. 测试
启动应用程序,并访问 `http://localhost:8080/my-entity/{name}`,其中 `name` 为查询关键字,可以通过该接口查找匹配的文档。
示例:
```bash
curl http://localhost:8080/my-entity/John
```
阅读全文