聚合搜索后端运行&部署文档

环境准备

本地启动

设置 Maven 完成 https://www.codefather.cn/post/1836689783992958977

使用 IDEA 打开项目

image-20250224214450432

初始化数据

连接本地 MySQL

image-20241030155405801

image-20241030155543228

点击 Download 下载 driver files

image-20241030155613559

输入,账号密码之后点击Test Connection 成功之后直接点击 OK

image-20241030155950071

找到根目录 sql 目录下面的 create_table.sql

Ctrl + A 全选代码右键选择 Execute

image-20250224215601236

image-20250224215737539

安装依赖

  • 首先需要配置好本地 Mavne, 和阿里云镜像,要是没有配置的话可以看一下这篇文章
image-20241112134330112

然后可以在 Build 看到正在下载依赖

image-20241101132248226

选择 Java 版本

image-20241101132905013 image-20250216185612629

没有的话可以使用下面的 Download JDK

image-20241114112524129 image-20250216185720974
  • 本地没有 JDK 可以直接 Download JDK
  • 本地有 JDK 但是没识别到 Add JDK from disk 选着对应目录即可
  • 选择 Java >= 8 建议 8

安装 Elasticsearch

在 环境准备里面有下载链接,下载之后解压到常用软件的路径

1、进入 elasticsearch/bin 在对应的目录输入 cmd

image-20241111151255652

2、直接输入命令就可以执行成功,但是要注意在使用的时候一定不要把这个窗口给关闭

▼
text
复制代码
elasticsearch.bat
image-20241111151545481

3、如何简化启动步骤呢?

elasticsearch 也给了我们更简单的启动方式,在 Windows 的 Services 启动

把 elasticsearch 安装到 Services 也给了对应的 bat 一键执行成功

1)在根目录的 bin 文件夹输入 cmd

image-20241111152043832
▼
text
复制代码
elasticsearch-service.bat
image-20241111152153194

2)找到 Windows 的 Service

Win + R 输入 Services.msc

找到 elasticsearch 直接点击左侧的 启动

image-20241111152425409

关闭就找到左侧的 关闭即可,一键操作

image-20241111152643095


安装 analysis-ik

1)在 elasticsearch/bin 目录下面输入 cmd

这个 {version} 版本看你下载的版本

image-20241111223915204
▼
text
复制代码
elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/{version}

比如:

▼
text
复制代码
elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.17.9

image-20241111224019978

2)查看是否安装成:

▼
text
复制代码
elasticsearch-plugin list

image-20241111224259328

3)需要重启 elasticsearch

win + R 输入 services.msc 找到 elasticsearch 直接找到左侧的 Restart (重启)

image-20241111225513339

4、验证是否启动成功

访问:http://localhost:9200

image-20250224223952012

安装 kibana

这个是 elasticsearch 的可视化工具所以要确保 elasticsearch 是运行状态

1)进入到 kibana-7.17.9/bin 目录在上方地址栏输入cmd

image-20241111181345498

2) 输入

▼
text
复制代码
kibana.bat

image-20241111182017581

可能稍微有点慢

4)启动地址 http://localhost:5601

image-20241111182057997

5)dev Tools

image-20241111182147163

image-20241111182230055

使用 ES

1、需要本地启动 Elasticsearch 、Kibana

2、初始化所需文件 sql/post_es_mapping.json

image-20250224222923212

3、启动 kibana 在 http://localhost:5601 的 DevTools

▼
json
复制代码
PUT post_v1 { "aliases": { "post": {} }, "mappings": { "properties": { "title": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "tags": { "type": "keyword" }, "userId": { "type": "keyword" }, "createTime": { "type": "date" }, "updateTime": { "type": "date" }, "isDelete": { "type": "keyword" } } } }
image-20241111231707152

4、注释相关代码注释

开启同步任务,将数据库的帖子同步到 Elasticsearch

找到 com.yupi.yuso.job.once.FullSyncPostToEs 注释掉

▼
java
复制代码
// todo 取消注释开启任务 @Component @Slf4j public class FullSyncPostToEs implements CommandLineRunner

找到 com.yupi.yuso.job.once.FetchInitPostList

▼
java
复制代码
//@Component @Slf4j public class FetchInitPostList implements CommandLineRunner

找到 com.yupi.yuso.job.cycle.IncSyncPostToEs

▼
java
复制代码
// todo 取消注释开启任务 @Component @Slf4j public class IncSyncPostToEs

5、修改配置

等部署到服务器上,urls 修改成 http://IP:9200

如果设置账号名和密码,就把对应的信息写到 username 和 password 即可

▼
yml
复制代码
spring: # Elasticsearch 配置 # todo 需替换配置,然后取消注释 elasticsearch: uris: http://localhost:9200 # username: root # password: 123456

BUG

Failed to parse mapping [_doc]: analyzer [ik_smart] has not been configured in mappings

解决:通过安装 analysis-ik 即可

image-20241111221518526

修改配置文件

配置文件在下面项目的 resources 目录

image-20241101133355503

  • application.yml 默认是本地运行时生效的配置
  • application-prod.yml 当在服务器指定 --spring.profiles.active=prod 才会生效,一般写线上配置,比如:线上 MySQL、Redis ...
  • application-test.yml 当在服务器指定 --spring.profiles.active=test 才会生效

1、MySQL

▼
yml
复制代码
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/my_db # yuapi 是数据库的名称 如果是远程 MySQL 例如: jdbc:mysql://192.129.11.11:3306/yuapi username: root # 用户名 password: 123456 # MySQL 设置的密码

2、Redis ,如果使用 Redis 修改 @SpringBootApplication(exclude = {RedisAutoConfiguration.class}) 把 exclude 里面的内容去掉就可以正常使用 Redis

▼
yml
复制代码
spring: redis: database: 1 host: localhost # 如果线上改成线上 IP port: 6379 # Redis 具体运行端口,默认安装 6379 timeout: 5000 # password: 123456 # 密码,默认安装没有密码,如果服务器 Redis 有密码就修改

3、COS 相关的配置

▼
yml
复制代码
# 对象存储 cos: client: accessKey: xxx secretKey: xxx region: xxx bucket: xxx

这个 accessKey 就是 SecretId !

官方文档:https://cloud.tencent.com/document/product/436/56390

image-20250207143131932

2)APPID、SecretKey 、SecretId 都是 https://console.cloud.tencent.com/capi 获取的,注意 SecretKey 只能在创建的时候可见,注意保存!

image-20250207143248159

3)host、bucket、region 都在 COS 对象存储那里获取

首先需要创建存储桶,位置 https://console.cloud.tencent.com/cos/bucket

image-20241215221117299

image-20241215221153704

image-20241215221217471

4)获取 host、bucket、region 信息

位置 https://console.cloud.tencent.com/cos/bucket

image-20241215225126493

image-20241215223740852

本地运行

image-20250224224126547

image-20250224224219783

制作 + 上传 JAR 包

image-20250216215421414

Lifecycle -> package 双击

之后我们就可以在 target 目录下面找到打包好的 jar 包


如果报错的话:

  1. 删除 target 目录(IDEA 右键删除即可),重新打包尝试
  2. Maven -> Lifecyle -> clean
  3. 退出 IDEA 在文件管理器找到该项目的 .idea 文件右键删除 ,然后重新打开 IDEA 重新走一遍流程
image-20240928104016670 image-20240928104101415

部署

后面可以参考这篇文章 『 后端部署(通用) 』

相关专栏

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
提到用 Rust 重写项目,很多人的第一反应往往是性能提升。以 Bun 为例,它最初主要采用 Zig 开发,后来在 2026 年发布的 v1.4 版本中将核心代码迁移到了 Rust。用 Rust 重写,性能、安全性往往是大家想要的,但是有没有想过用 Rust 重写还能发现 bug 呢? pgrust 这个项就是,他用 Rust 重新实现 PostgreSQL,保持通信协议和 SQL 方言兼容。为了确认新系统的行为和原版一致,开发者需要对着 PostgreSQL 的实际返回逐个比对。结果查着查着,有些异常不是新代码的锅,PostgreSQL 自己就是这样的。pgrust 开发者 Michael Malis 把其中几个报告给了 PostgreSQL 社区。 大概的问题: 1)SP-GiST 空间索引里有个函数判断点的方位,代码认为上、下、同一水平线三种情况已经穷尽了,末尾放了句「impossible case」兜底。结果在特定浮点边界附近,三种判断同时不成立,程序真走进了这个「不可能」的分支 2)日期格式缓存复用时,一个解析模式的标记没重置,导致同一条 JSONPath 查询在同一个会话里,换个执行顺序结果就不一样。 3)pgcrypto 的 crypt() 在某些输入下截断了多字节字符,返回的文本编码不合法。能存进去,但 pg_dump 导出时就炸了。 一个用 Rust 重写的新项目,测着测着,把运行了几十年的 PostgreSQL 里埋着的东西翻了出来。Rust 重写的价值,不一定只在跑得更快、更安全这一件事上。为了做到真正的兼容,开发者得把前人没怎么碰过的边界全走一遍,这个过程本身就在帮原版排雷。
4
ARTS 1025: 唯一字符与同构字符串、省词可能增加阅读负担与重新估算软件的实现成本
5
🎉 1024 程序员节快乐! 祝编程导航里的每一位程序员:offer 多多,薪资翻倍,面试顺利,早日拿下心仪 offer!💻
17
AST:从 Java 代码理解抽象语法树
5
原来维基百科还有专门研究「AI 味」的页面 今天偶然发现一个挺有意思的维基百科页面:https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing,专门整理 AI 写作的典型特征。 里面总结了很多我们平时经常看到的 AI 味,比如喜欢用“值得注意的是”“在当今快速发展的时代”“综上所述”,还有过度使用排比、加粗、列表,以及一些看起来很有道理,实际上没什么信息量的表达。 感觉以后可以定期翻翻这个 wiki,尤其是经常使用 AI 辅助写作的人,应该能从中发现不少所谓的 AI 味。 链接: https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing
5
下载 APP