SpringBoot集成Elasticsearch

1.Maven配置#

1
2
3
4
5
6
<!-- Spring Data Elasticsearch -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<!-- 版本随spring-boot-starter-parent -->
</dependency>

2.代码配置#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.yeshimin.ysmspace.config;

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;

@Configuration
public class ElasticsearchConfiguration extends AbstractElasticsearchConfiguration {

@Override
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo("vhost4:9200") // 指定es服务地址
.build();

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

3.数据访问层代码#

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
package com.yeshimin.ysmspace.model.elasticsearch;

// ... import

@Data
@Document(indexName = Common.PROJECT_NAME + "_product")
public class ProductDoc {

/**
* 主键ID
*/
@Id
@Field(name = "id", type = FieldType.Long)
private Long id;

/**
* 创建时间
*/
@Field(name = "create_time", type = FieldType.Date, format = DateFormat.basic_date_time)
private LocalDateTime createTime;

/**
* 商品名称
*/
@Field(name = "name", type = FieldType.Keyword)
private String name;

// ...
}
1
2
3
4
5
6
7
package com.yeshimin.ysmspace.dal.elasticsearch;

// ... import

@Repository
public interface ProductEsRepository extends ElasticsearchRepository<ProductDoc, Long> {
}

4.使用#

遵循spring data规则

示例:

1
2
3
4
5
6
@Autowired
private ProductEsRepository productEsRepository;

ProductDoc productDoc = new ProductDoc();
// ...
productEsRepository.save(productDoc);

5.版本信息#

  • springboot parent - 2.3.5.RELEASE
  • spring data elasticsearch - 7.6.2
  • elasticsearch - 7.9.3