springboot如何整合elasticsearch
时间: 2023-09-07 20:12:36 浏览: 159
springboot整合elasticsearch
要在Spring Boot中整合Elasticsearch,需要执行以下步骤:
1. 添加Elasticsearch客户端依赖:
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.6.2</version>
</dependency>
```
2. 配置Elasticsearch客户端:
在application.properties文件中添加以下配置:
```
spring.data.elasticsearch.cluster-nodes=localhost:9200
spring.data.elasticsearch.cluster-name=my-application
```
这里的cluster-name可自定义,需要和Elasticsearch中的集群名一致。
3. 创建Elasticsearch Repository:
创建一个接口,继承自ElasticsearchRepository,例如:
```
public interface ItemRepository extends ElasticsearchRepository<Item, Long> {
//定义自定义查询方法
}
```
这里的Item是一个实体类,Long表示主键类型。
4. 创建Elasticsearch实体类:
实体类需要添加注解,如下所示:
```
@Document(indexName = "item", type = "docs", shards = 1, replicas = 0)
public class Item {
@Id
private Long id;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String title;
@Field(type = FieldType.Keyword)
private String category;
@Field(type = FieldType.Keyword)
private String brand;
@Field(type = FieldType.Double)
private Double price;
@Field(type = FieldType.Keyword, index = false)
private String images;
//省略getters和setters方法
}
```
注解说明:
- @Document:表示该类对应Elasticsearch中的一个文档,indexName表示索引名称,type表示文档类型,shards表示分片数,replicas表示副本数。
- @Id:表示该字段是主键。
- @Field:表示该字段需要被索引,type表示字段类型,analyzer表示分词器,index表示是否需要被索引。
5. 定义自定义查询方法:
在ItemRepository接口中定义自定义查询方法,例如:
```
public interface ItemRepository extends ElasticsearchRepository<Item, Long> {
List<Item> findByTitle(String title);
}
```
6. 使用Elasticsearch:
在业务逻辑中使用ItemRepository,例如:
```
@Autowired
private ItemRepository itemRepository;
...
List<Item> itemList = itemRepository.findByTitle("手机");
```
以上就是整合Elasticsearch的步骤。
阅读全文