springboot整合es
时间: 2023-09-07 21:11:07 浏览: 77
springboot整合elasticsearch7实现es数据同步,查询、相关度排序、高亮显示、自动补全搜索等功能。
5星 · 资源好评率100%
Spring Boot 是一个非常流行的 Java Web 开发框架,而 Elasticsearch 是一个非常强大的搜索引擎,它们的结合可以为我们的应用带来很多好处。下面是一个简单的 Spring Boot 整合 Elasticsearch 的示例,你可以参考一下:
1. 添加依赖
在 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
```
2. 配置 Elasticsearch
在 application.properties 文件中添加以下配置:
```properties
spring.data.elasticsearch.cluster-name=my-cluster-name
spring.data.elasticsearch.cluster-nodes=localhost:9300
```
其中,`cluster-name` 需要与 Elasticsearch 集群的名称一致,`cluster-nodes` 需要指定 Elasticsearch 集群中至少一个节点的 IP 地址和端口号。
3. 创建实体类
创建一个实体类,用于映射 Elasticsearch 中的文档,例如:
```java
@Document(indexName = "my_index", type = "my_type")
public class MyDocument {
@Id
private String id;
private String title;
private String content;
// 省略 getter 和 setter 方法
}
```
其中,`@Document` 注解用于指定文档所在的索引和类型,`@Id` 注解用于指定文档的唯一标识字段。
4. 创建 Elasticsearch Repository
创建一个 Elasticsearch Repository 接口,例如:
```java
public interface MyDocumentRepository extends ElasticsearchRepository<MyDocument, String> {
List<MyDocument> findByTitle(String title);
List<MyDocument> findByContent(String content);
}
```
其中,`ElasticsearchRepository` 是 Spring Data Elasticsearch 提供的一个接口,用于操作 Elasticsearch 中的文档。在 Repository 接口中,可以定义一些查询方法,这些方法会根据方法名自动生成 Elasticsearch 查询语句。
5. 测试 Elasticsearch 查询
在代码中使用 `MyDocumentRepository` 接口进行 Elasticsearch 查询,例如:
```java
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyDocumentRepositoryTest {
@Autowired
private MyDocumentRepository myDocumentRepository;
@Test
public void testFindByTitle() {
List<MyDocument> documents = myDocumentRepository.findByTitle("Spring Boot");
Assert.assertNotNull(documents);
Assert.assertFalse(documents.isEmpty());
}
@Test
public void testFindByContent() {
List<MyDocument> documents = myDocumentRepository.findByContent("Elasticsearch");
Assert.assertNotNull(documents);
Assert.assertFalse(documents.isEmpty());
}
}
```
其中,`@Autowired` 注解用于自动注入 `MyDocumentRepository` 接口的实现对象,`@Test` 注解用于标记测试方法。在测试方法中,可以调用 `MyDocumentRepository` 接口中定义的查询方法,以进行 Elasticsearch 查询。
以上就是一个简单的 Spring Boot 整合 Elasticsearch 的示例,希望能对你有所帮助。
阅读全文