html
需要先部署短说系统后,再部署全文搜索
全文搜索独立部署程序使用java开发,打包成jar包,application.yml是配置文件,两个文件要放在同一个目录下

由于jar包是java11开发的,所以需要jdk11包,官网地址:https://www.oracle.com/java/technologies/downloads/#java11
比如
tar -xzvf jdk-11.0.14_linux-x64_bin.tar.gz -C /usr/local/
mv /usr/local/jdk-11.0.14 /usr/local/jdk-11
vim /etc/profile.d/java.sh,添加下面两行
export JAVA_HOME=/usr/local/jdk-11
export PATH=$JAVA_HOME/bin:$PATH
保存之后执行命令:source /etc/profile,使配置立即生效
java --version
返回版本号就算生效
在短说数据库里执行以下sql
DROP TABLE IF EXISTS `osx_fulltext_content`;
CREATE TABLE `osx_fulltext_content` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '网站code',
`title` varchar(64) NOT NULL DEFAULT '' COMMENT '标题',
`content` varchar(256) NOT NULL DEFAULT '' COMMENT '部分内容',
`cid` int(11) NOT NULL DEFAULT '0' COMMENT '内容ID',
`author` varchar(32) NOT NULL DEFAULT '' COMMENT '作者',
`author_id` int(11) NOT NULL DEFAULT '0' COMMENT '作者ID',
`content_create_time` int(11) NOT NULL DEFAULT '0' COMMENT '内容创建时间',
`content_update_time` int(11) NOT NULL DEFAULT '0' COMMENT '内容更新时间',
`total` int(11) NOT NULL DEFAULT '0' COMMENT '被搜索量',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `code_idx` (`code`),
KEY `cid_idx` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='全文搜索内容表' ROW_FORMAT=DYNAMIC;
DROP TABLE IF EXISTS `osx_fulltext_recharge_log`;
CREATE TABLE `osx_fulltext_recharge_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '网站code',
`type` varchar(16) NOT NULL DEFAULT '' COMMENT '充值类型',
`num` int(11) NOT NULL DEFAULT '0' COMMENT '充值数量',
`start_num` int(11) NOT NULL DEFAULT '0' COMMENT '充值前数量',
`end_num` int(11) NOT NULL DEFAULT '0' COMMENT '充值后数量',
`remark` varchar(128) NOT NULL DEFAULT '' COMMENT '备注',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `code_idx` (`code`),
KEY `create_time_idx` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='全文搜索充值记录表' ROW_FORMAT=DYNAMIC;
DROP TABLE IF EXISTS `osx_fulltext_search_log`;
CREATE TABLE `osx_fulltext_search_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '网站code',
`type` varchar(32) NOT NULL DEFAULT '' COMMENT '操作类型',
`content` text NOT NULL COMMENT '搜索内容',
`username` varchar(32) NOT NULL DEFAULT '' COMMENT '用户',
`uid` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
`take_time` int(11) NOT NULL DEFAULT '0' COMMENT '搜索耗时,毫秒',
`total` int(11) NOT NULL DEFAULT '0' COMMENT '搜索结果数',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '搜索状态',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `code_idx` (`code`),
KEY `type_idx` (`type`),
KEY `create_time_idx` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='全文搜索日志表' ROW_FORMAT=DYNAMIC;
DROP TABLE IF EXISTS `osx_fulltext_upload_log`;
CREATE TABLE `osx_fulltext_upload_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '网站code',
`content` text NOT NULL COMMENT '上传内容',
`status` tinyint(11) NOT NULL DEFAULT '0' COMMENT '状态',
`take_time` int(11) NOT NULL DEFAULT '0' COMMENT '耗时',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `code_idx` (`code`),
KEY `create_time_idx` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='全文搜索上传日志表' ROW_FORMAT=DYNAMIC;
DROP TABLE IF EXISTS `osx_fulltext_website`;
CREATE TABLE `osx_fulltext_website` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`code` varchar(64) NOT NULL DEFAULT '' COMMENT '网站code',
`num` int(11) NOT NULL DEFAULT '0' COMMENT '剩余数量',
`content_num` int(11) NOT NULL DEFAULT '0' COMMENT '内容数',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '网站状态',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `code_idx` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='全文搜索站点表' ROW_FORMAT=DYNAMIC;
如果服务器无法安装docker或者不允许使用docker的话,可以用《3.2编译安装》来部署
3.1和3.2是或的关系
服务器内存4G以上,否则可能无法运行。建议使用docker部署,使用7.17.18版本
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.18
//docker pull elasticsearch:7.17.18 //从2024年4月15日起,不再使用7.9,改用7.17.18
//也可直接执行下方一行run,不执行pull也会自动pull
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.18
可以参考:https://github.com/medcl/elasticsearch-analysis-ik#install
以docker安装为例:
执行docker exec -it elasticsearch /bin/bash进入容器
执行命令
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.18/elasticsearch-analysis-ik-7.17.18.zip
//从2024年4月15日起使用7.17.18
//如果github.com连接超时,无法安装,可以使用下面的命令
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.17.18
退出容器之后再重启容器docker restart elasticsearch,即可完成
tar -xvf elasticsearch-7.17.18-linux-x86_64.tar.gz -C /usr/local
mv /usr/local/elasticsearch-7.17.18 /usr/local/elasticsearch
useradd elastic
cd /usr/local/elasticsearch
./bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.17.18
vim config/elasticsearch.yml
第17,23,61行解除注释
第33,37,56,70,75行和最后一行改成下列
33行
path.data: /usr/local/elasticsearch/data
37行
path.logs: /usr/local/elasticsearch/logs
56行
network.host: 0.0.0.0
70行
discovery.seed_hosts: “127.0.0.1”,”内网IP”
75行
cluster.initial_master_nodes: “node-1”
最后一行
ingest.geoip.downloader.enabled: false
vim config/jvm.options
第31,32行就行修改(前面不要有空格) -Xms8g -Xmx8g
vim /etc/sysctl.conf
在最后添加一行 vm.max_map_count=655360 保存后,输入
sysctl -p
vim /etc/security/limits.conf
在最后添加这几行
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
chown -R elastic:elastic /usr/local/elasticsearch
切换用户 elastic
su elastic
启动elasticsearch
/usr/local/elasticsearch/bin/elasticsearch
同时打开新的窗口,访问下列,看看有内容返回
curl 127.0.0.1:9200
vim /etc/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
After=network.target
Requires=network.target
[Service]
Type=simple
User=elastic
Group=elastic
# 关键环境变量(请根据实际路径修改)
Environment="ES_HOME=/usr/local/elasticsearch"
Environment="ES_PATH_CONF=/usr/local/elasticsearch/config"
Environment="ES_JAVA_HOME=/usr/local/jdk-11"
Environment="PID_DIR=/usr/local/elasticsearch/run"
# 工作目录必须设置
WorkingDirectory=/usr/local/elasticsearch
# 使用绝对路径执行命令
ExecStart=/bin/bash -c '${ES_HOME}/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid'
# 资源限制
LimitNOFILE=65536
LimitMEMLOCK=infinity
LimitNPROC=4096
# 重启策略
Restart=always
RestartSec=10s
# 日志配置
StandardOutput=journal
StandardError=inherit
# 安全设置
PrivateTmp=true
ProtectSystem=full
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
保存退出后
systemctl daemon-reload
启动:
systemctl start elasticsearch
如果使用宝塔部署,可以直接使用宝塔安装redis
或者可以使用docker部署redis容器,参考:https://hub.docker.com/_/redis
application.yml为配置文件,根据自己的配置自行修改
只需要修改一下参数:
port:程序运行端口号
url:数据库地址和数据库名称
username:数据库用户名
passowrd:数据库密码
redis
host:redis服务器地址
es
host:ElasticsSearch服务器地址和端口号

为了防止系统原因导致java程序意外退出,强烈建议使用supervisor守护进程,具体可以参考https://www.yuque.com/thisky/ulwd0g/thisxx#rgcho
其中执行命令换成 java -jar fulltext-0.0.1-SNAPSHOT.jar
另外也可以直接运行程序,有进程意外中断的风险,如果进程中断,需要再次执行以下命令。
进入jar包所在目录,执行命令:
nohup java -jar fulltext-0.0.1-SNAPSHOT.jar >> fulltext.log 2>&1 &
在管理后台->扩展模块->全文搜索设置,服务方式为“私有部署”,私有部署搜索引擎地址改为本地相应的地址即可


