仿牛客网社区项目(二十九)Spring boot整合Ealsticsearch
Spring boot整合Ealsticsearch
- 引入依赖
- spring-boot-starter-data-elasticsearch
- 配置Elasticsearch
- Redis和Es底层都用到了Netty,有启动冲突。解决:在CommunityApplication类加入初始化方法进行配置。
- Spring Data Elasticsearch(调用API)
- ~~ ElasticsearchTemplate(集成了Es的CRUD方法)~~
- RestHighLevelClient 新版ES的CRUD
- ElasticsearchRepository(接口,底层为ElasticsearchTemplate,用起来更方便,新版ES也可见用)
- 导入依赖 我是用的es版本是7.6.2
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.6.2</version>
</dependency>
springboot的版本对应的es版本也不同 我这是2.3.7的springboot,用的也是2.3.7的依赖
- 这个启动冲突不太了解 为了方便加上无妨 ,在启动类中添加一个初始化方法
@PostConstruct
public void init() {
// 解决netty启动冲突问题
// see Netty4Utils.setAvailableProcessors()
System.setProperty("es.set.netty.runtime.available.processors", "false");
}
- 不需要写yml,注入config即可
@Configuration
public class ElasticSearchClientConfig {
//配置RestHighLevelClient依赖到spring容器中待用
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
//绑定本机,端口,协议,如果是ES集群,就配置多个
new HttpHost("192.168.223.129",9200,"http")));
return client;
}
4.对DIscusspost类做处理
@Document(indexName = "discusspost", shards = 6, replicas = 3)
public class DiscussPost {
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
@Field(type = FieldType.Integer)
private int userId;
@Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
private String title;
@Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
private String content;
@Field(type = FieldType.Integer)
private int type;
@Field(type = FieldType.Integer)
private int status;
@Field(type = FieldType.Date,format = DateFormat.basic_date)
private Date createTime;
@Field(type = FieldType.Integer)
private int commentCount;
@Field(type = FieldType.Double)
private double score;
}
5.创建一个Repository类用于操作
@Repository
public interface DiscussPostRepository extends ElasticsearchRepository<DiscussPost, Integer> {
//内置了很多方法,可以像数据库一样增删改查
}
分类:
仿牛客网社区项目
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署