# 全文检索部署维护手册V10.0SP1

北京致远互联软件股份有限公司 2025年10月

# 前言

特别说明:本手册适用于协同V10.0SP1版本,当前适配版本部署模式与旧版本存在差异,使用V10.0SP1版本的全文检索项目必须参考本手册进行部署!

本手册对全文检索独立服务的安装及维护相关事宜进行说明。

如对安装维护手册中相关问题存在疑问,请与致远互联的客户服务人员联系。

维度 支持范围
当前服务名称 全文检索服务
适配协同版本 A6、A8、A8-N、G6、G6-N V10.0SP1版本
适用服务器环境 Windows Server、Linux、信创操作系统
所需依赖 需要提前部署协同管理服务

部署视频: 全文检索V10.0SP1版本部署视频可访问 协同云-赋能中心-致远学院-搜索“V10.0 SP1全文检索Linux命令行部署演示 (opens new window)

# 修订记录

修订内容 修订时间
10.SP1全文检索不在提供elasticsearch服务安装,由客户自行安装,文档后面有安装指导步骤 2025-10-21

# 一、部署说明

# 概要说明

  • 取协同版本一致的全文检索安装程序部署;
  • 使用全文检索必须部署独立的全文检索服务;
  • 全文检索服务支持单机和集群两种部署方式

# 全文检索单机模式

  • 资源成本需求低,只需要一台服务器

1753251089902.png

# 全文检索集群模式

  • 满足高性能、具备高可用的要求,至少需要3台服务器

1753251109914.png

# 端口互通要求

如下是全文检索服务对外用到的默认端口:

端口服务 http默认端口 端口互通要求
全文检索客户端连接端口 9700 需要被协同服务访问(协同==>>>全文检索:9700)
全文检索ActiveMQ 消息队列服务 16161 需要被协同服务访问(协同==>>>全文检索:16161)
全文检索ActiveMQ RMI 通信 1099 检索服务器其它应用不要占用此端口
全文检索Elasticsearch 数据交互 9200、9300 全文检索集群节点1<<<==>>>节点2<<<==>>>节点3<<<==>>>节点1
协同服务应用端口 80 全文检索需要能访问协同负载地址==>>>http://协同服务

# 服务器配置参考

在线用户数 微服务名称 非信创单节点配置推荐 信创单节点配置推荐
200以下 全文检索 CPU8核以上/内存16G以上/硬盘320G CPU12核以上/内存20G以上/硬盘320G
200~500 全文检索 CPU8核以上/内存16G以上/硬盘320G CPU12核以上/内存20G以上/硬盘320G
500~1000 全文检索 CPU8核以上/内存16G以上/硬盘320G CPU12核以上/内存20G以上/硬盘320G
1000~3000 全文检索 CPU16核以上/内存24G以上/硬盘320G CPU20核以上/内存32G以上/硬盘320G
3000~5000 全文检索 CPU16核以上/内存32G以上/硬盘320G CPU20核以上/内存48G以上/硬盘320G
5000~10000 全文检索(建议集群) CPU16核以上/内存32G以上/硬盘320G CPU20核以上/内存48G以上/硬盘320G

注意:

  • 全文检索集群节点需要3台,每台节点服务器的配置推荐单机的2/3资源

  • 硬盘使用场景:在进行重建索引时,解析upload附件到检索服务器上,7天清理,此时会占用磁盘空间

# Linux/信创操作系统初始准备

如全文检索采用Linux/信创操作系统部署,需要做如下初始准备:

安装基本的命令组件:

安装部署前,先确保当前系统已经安装了最基础的命令,(能连接互联网服务器)可执行如下语句做预装:

如服务器无法连接互联网,请要求操作系统厂商预装必要的命令组件

# Red Hat系列(如CentOS),使用yum命令安装,如当前系统提示yum不可用,则尝试使用apt
sudo yum update -y
sudo yum install tar curl telnet vim unzip -y

# 基于Debian的系统(如Ubuntu)使用apt预装组件
sudo apt update -y
sudo apt upgrade -y
sudo apt install tar curl telnet vim unzip -y

# 基于欧拉openEuler、龙蜥Anolis OS等系统使用dnf安装
sudo dnf update -y
sudo dnf install tar curl telnet vim unzip -y

安装图形命令组件:

确保当前系统安装了必要的字体、图形组件,否则会影响后续程序使用:

# Red Hat系列(如CentOS),使用yum命令安装,如当前系统提示yum不可用,则尝试使用apt
sudo yum install freetype libX11 libXrender libXtst libXi fontconfig -y

# 基于Debian的系统(如Ubuntu)使用apt预装组件
sudo apt install libfreetype6 libx11-6 libxrender1 libxtst6 libxi6 fonts-config -y

# 基于欧拉openEuler、龙蜥Anolis OS等系统使用dnf安装
sudo dnf install freetype libX11 libXrender libXtst libXi fontconfig -y

在进行安装部署前,先按照如下配置优化Linux相关系统参数:

修改Linux网络参数:

1、通过 vim /etc/sysctl.conf 命令在文件末尾添加:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
# 非常关键:命令调整可创建的最大虚拟内存区域的数量
vm.max_map_count=262144

2、然后执行命令重启网络服务:

service network restart

# 如上一条命令不可用,可能是不同Linux发行版差异,尝试换一个命令重启
systemctl restart NetworkManager

3、通过 vim /etc/rc.d/rc.local 命令在文件末尾添加:

echo "30">/proc/sys/net/ipv4/tcp_fin_timeout
echo "1800">/proc/sys/net/ipv4/tcp_keepalive_time
echo "0">/proc/sys/net/ipv4/tcp_window_scaling
echo "0">/proc/sys/net/ipv4/tcp_sack
echo "0">/proc/sys/net/ipv4/tcp_timestamps

修改Linux最大进程数最大文件打开数:

通过 vim /etc/security/limits.conf 命令编辑此文件添加以下内容

# RedHat系列、CentOS、欧拉、麒麟等大部分系统使用的配置====start
# open files  (-n)
* soft nofile 65535
* hard nofile 65535
# max user processes  (-u)
* soft nproc 65535
* hard nproc 65535
# RedHat系列、CentOS、欧拉、麒麟等大部分系统使用的配置====end


# 如Debian和Ubuntu系统使用root用户,还需添加如下配置====start
# open files  (-n)
root soft nofile 65535
root hard nofile 65535
# max user processes  (-u)
root soft nproc 65535
root hard nproc 65535
# 如Debian和Ubuntu系统使用root用户,还需添加如上配置====end

以上配置完成后,执行reboot重启操作系统,随后通过 ulimit -a 命令检查open files和max user processes是否都变成65535,如未生效,则将*改成root,再次重启测试是否生效:

# 如果调整配置并且重启操作系统之后以上配置未生效,当前是root设置,则将*改成root即可生效
root soft nofile 65535
root hard nofile 65535
root soft nproc 65535
root hard nproc 65535

临时禁用swap,ElasticSearch建议永久禁用swap,永久禁用方法参考网上解决方案:

swapoff -a

# 老版本升级方法说明

协同不同老版本的全文检索升级到V10.0SP1,涉及不同的更新动作,具体如下:

  • 从协同V8.2及更高版本升级至V10.0SP1版本,全文检索程序需要更换(详见“全文检索程序更新”章节),但无需做索引重建。
  • 从协同V8.1SP2及更早版本升级至V10.0SP1版本时,除更新全文检索程序以外(详见“全文检索程序更新”章节),还需要对原全文检索索引数据进行升级(详见“历史索引升级工具使用说明”章节),否则无法正常使用(不保留索引数据可以忽略)。
版本号 全文检索程序更新 全文检索索引升级
V8.2及更高版本 需要执行,【执行链接】 × 无需执行
V8.1SP2及更老版本 需要执行,【执行链接】 需要执行,【执行链接】

# 二、全文检索部署手册V10.0SP1

# 第一步部署Searchservice

# win/linux部署Searchservice

X86环境(Windows或Linux)从商务公布的对应版本安装程序下载地址下载名为“IndependentService.zip”的文件,此文件是X86环境扩展服务安装程序。

1744350274906.png

服务器直接解压IndependentService.zip,解压后的目录中“SeeyonSearchserviceInstall”就是全文检索安装程序

  • SeeyonSearchserviceInstall.bat适用于Windows服务器安装全文检索
  • SeeyonSearchserviceInstall.sh适用于Linux服务器安装全文检索

1744367969083.png

如全文检索在Linux服务器安装,则将IndependentService.zip上传到服务器,再进行解压,解压后对整个目录赋予可执行权限:

mkdir /data
# 解压安装程序
unzip 1.IndependentService -d /data
# 对扩展服务安装目录赋予可执行权限
chmod -R 777 /data/1.IndependentService
# 查看解压后的程序目录
cd /data/1.IndependentService/
ls

如全文检索在Windows服务器安装,建议服务器杀毒软件将安装程序设置为信任目录,避免安装部署时误报。

Window和Linux图形化服务器按如下方式安装SearchService:

第一步,启动全文检索安装程序:

  • Windows服务器,直接双击运行SeeyonSearchserviceInstall.bat
  • Linux服务器,使用命令启动运行SeeyonSearchserviceInstall.sh 要求当前系统具备图形化组件,无图形系统见后续章节部署

第二步,阅读许可协议,无异议选择“接受”并“下一步”

第三步,选择产品的安装目录,选择“下一步” ,Windows系统下安装目录建议更改到非系统盘符

第四步,依次点击下一步,直至完成安装:

第五步,安装完成后,找到全文检索程序目录,Windows正常情况都包含如下文件,如检查文件无误,则确定安装完成:

# Linux命令行部署Searchservice

如当前Linux系统没有图形化组件,则可以命令行部署:

部署程序同样从商务公布的对应版本安装程序下载地址下载名为“IndependentService.zip”的文件,该文件中存放了命令行安装程序:

1、将IndependentService.zip上传到服务器,再进行解压,解压后参考如下命令到命令行工具下修改全文检索配置:

unzip 1.IndependentService.zip
cd 1.IndependentService/
tar -xf SilentInstallerTool.tar.gz
cd SilentInstallerTool/SilentInstaller/
# 修改静默安装配置文件
vim cfgHome/installConfig.cfg

1762256291536.png

2、修改 installConfig.cfg 配置信息,静默安装参数说明:

productLine: 需要静默安装的服务名,默认全文检索,配置为 productLine=Searchservice ,需要安装其它服务则参考如下命名填入:

  • 文件服务(Fileservice)

  • 全文检索(Searchservice)

  • 音视频服务(Mediaservice)

  • V-Join泛组织管理平台(VJoin)

  • 数据转储微服务(Datatransfer)

  • 致远服务(S1)

installpath: 扩展服务程序安装路径,如全文检索设置成 /data/Seeyon ,最终程序会安装在/data/Seeyon/Searchservice目录下。

1762256322490.png

3、在SilentInstaller目录下执行全文检索安装:

cd 1.IndependentService/SilentInstallerTool/SilentInstaller/
# 执行安装操作
bash install.sh

命令行安装过程中会提醒:是否继续安装? 如果确认则输入y敲回车继续进行安装。安装过程还要自定义S1密码,整个安装过程如下:

1762256517774.png

# 信创环境部署Searchservice

信创环境从商务公布的对应版本安装程序下载地址下载名为“XinChuang.zip”的文件,此文件是信创环境相关服务安装程序。

1736391654206.png

将XinChuang.zip上传到信创系统,并解压XinChuang包,解压后,Search目录就是全文检索的程序根目录:

unzip 2.V9.0SP1_XinChuang.zip

1744906671418.png

Search全文检索程序免安装,建议解压后放置到规划的目录方便管理,比如参考X86统一放置到/data/Seeyon目录:

mkdir -p /data/Seeyon
# 全文检索程序迁移到规划好的目录
mv Search /data/Seeyon/

1744906895680.png

准备JDK:Search全文检索免安装版本不带JDK,需要自行准备。将JDK8上传到自定义路径,比如/usr/local/jdk,随后修改Search/config/jvm.properties文件中的search_java参数,设置成JDK下的bin/java运行路径:

cd /data/Seeyon/Search/config
vim jvm.properties

注意路径地址不是指向jdk,而是指向jdk下的bin/java可执行文件的路径:

1744907225654.png

# 第二步部署ElasticSearch

协同全文检索服务实际由 SearchService微服务(致远提供)ElasticSearch分布式搜索引擎(开源项目) 2个服务组成。

第一步只是安装了SearchService微服务,还需要按照本章节进行ElasticSearch程序的下载和拷贝才能运行!

如果只进行了第一步部署Searchservice,未做本步操作,直接启动全文检索服务,将会遇到 “请按照手册安装elasticsearch服务” 的错误提示:

1762305920974.png

1、参考《Elasticsearch 7.17.17程序下载手册 (opens new window)》下载ElasticSearch程序(下载需要一定时间,建议提前准备),按手册下载后,最终能得到如下结构的ES包:

1761805823466png

1762250465877.png

注:如客户对ElasticSearch有对应小版本合规要求,请自行下载合适的ES程序,下载所需同样资源可参考《Elasticsearch 7.17.17程序下载手册》。

2、将ElasticSearch程序中的SearchService文件夹拷贝到上一步全文检索的部署目录下:

  • 如Windows环境Searchservice微服务部署在 D:\Seeyon\Searchservice ,则将下载好的ES程序中的Searchservice文件夹完整拷贝到 D:\Seeyon下。

  • 如Linux或信创环境Searchservice微服务部署在 /data/Seeyon/Searchservice ,ElasticSearch程序下载放置在 /data/es_script/Searchservice 目录,则可以参考如下命令拷贝:

cp -r /data/es_script/Searchservice/. /data/Seeyon/Searchservice/

# 第三步配置全文检索

无论是X86还是信创系统,无论是图形化安装还是免安装程序,配置步骤均一样,参考本章节操作。

在全文检索单机已经安装完成前提下,进行协同与全文检索的配置:

1、启动协同服务器,获取注册码

登录协同获取服务注册码:确保协同服务启动,登录协同系统管理员后台,进入"全文检索服务配置"界面,查看并记录服务注册码:

1744358541056.png

2、到全文检索配置注册码,及其它重要参数:

若未安装S1,需要手工进行注册码配置:将注册码配置在全文检索服务程序目录Searchservice/config/application.properties文件中,并调整其他配置参数:

server.ip:全文检索服务器的 ip地址,分离部署需要设置实际ip,如10.5.5.160

a8.server.url:协同服务的访问地址,注意带应用上下文/seeyon,**需要确保全文检索服务器能访问到协同服务(协同集群则是负载地址)**

regsit.code: 注册码,需要与系统管理员账号中的服务注册码保持一致,将第一步服务注册码拷贝到此处

server.port:全文检索服务的端口,默认9700, **全文检索服务9700端口必须让协同应用服务器可以访问**

path_data:索引数据目录,默认是../base/data(即Searchservice/ES/base/data),如需修改需要设置绝对路径(不建议放在挂载盘上)

Windows系统通过文本工具修改保存,Linux系统可通过vim修改保存。

1744358848433.png

若已安装S1,可在S1的"服务启停配置"中,进行全文检索配置:

search1

search2

3、协同服务器配置全文检索信息:

协同服务器运行SeeyonConfig,在协同系统参数设置中需要把index.index_a8Ip设置成当前协同服务器实际IP。

如果没有图形化窗口,在协同程序目录/base/conf/plugin.properties文件中单独增加一行配置:

# 10.1.203.223填写客户环境协同服务器真实IP
index.index_a8Ip = 10.1.203.223

1744359322390.png

4、SeeyonConfig调整配置后需要重启协同服务。重启后,登录协同系统管理员后台,进入系统分区设置,修改所有分区,配置“全文检索网络映射路径”:此路径即协同附件目录地址,需要确保全文检索服务器能访问到协同附件所有分区目录!

如协同服务与全文检索服务部署在同一台服务器 ,并且附件默认存放在 协同程序目录\base\upload 下,则全文见检索网络映射路径直接指向附件绝对路径:

1744368004139.png

如协同服务与全文检索服务采用分离部署(不是同一服务器) ,并且附件默认存放在 协同程序目录\base\upload 下,则需要在协同附件目录下进行目录共享配置,确保全文检索能读取到协同的upload。Linux系统采用NFS协议挂载、Windows采用共享文件夹+SMB 协议挂载。

其它场景,如协同服务集群部署,附件必然会采用共享存储模式方便每台协同能访问,此时也需要给全文检索服务器开通共享存储访问权限。

Linux系统采用NFS协议挂载、Windows采用共享文件夹+SMB 协议挂载,具体可由客户IT进行配置。如需个人参照配置,可参考协同集群部署手册,本手册不赘述。

# 第四步全文检索服务启停

启动前注意事项:

1、需要先确保协同服务处于运行状态,再启动全文检索服务,启动检索服务时会向协同服务发送请求

2、全文检索服务启动时,默认需要占用 9700、16161、1099、9200、9300 端口,确保这些端口未被其它服务进程占用,如需调整端口,请在全文检索服务配置文件config/application.properties 中配置为其他可用的端口。

3、全文检索服务和协同服务有端口互通要求,详细见 【默认端口互通】 章节,如未开通端口访问权限,会导致全文检索不可用。

启动方法一: 可以使用S1启动全文检索服务

启动方法二: 可以使用全文检索程序目录Searchservice/startup脚本启动

  • Windows系统鼠标右键“以管理员身份运行”startup.bat启动,启动窗口不要关闭
  • Linux系统运行 ./startup.sh 命令启动
# 注意:
# 首次启动,给全文检索程序目录Searchservice做下操作权限授权,否则可能一直启动不成功
# 必须保证运行ES服务的用户,有权限进入 /data/Seeyon/Searchservice,此时再向全文检索目录授权777(尤其不要放到/root目录下)
chmod -R 777 /data/Seeyon/Searchservice/

cd 全文检索程序目录Searchservice/startup
./startup.sh

启动后,注意进程是两个,一个elasticsearch进程、一个searchservice微服务进程:

1744731045174.png

如果一直启动不了,除了关注Searchservice目录可执行权限外,还要关注JVM内存是否充足,调整JVM内存方法见“JVM配置调优”章节!

启动后验证: 登录协同系统管理员后台,进入"全文检索服务配置"界面,确保一键体检通过以及server.ip信息都已经打印在页面中:

1744366519420.png

如启动后访问协同系统管理员后台一键体检提示:全文检索服务未部署或未启动。需要分析两个问题:

  • 1、全文检索服务是否启动:确保两个进程都需要存在,一个elasticsearch进程、一个searchservice微服务进程
  • 2、全文检索端口是否开放: 参考【默认端口互通】 章节,防火墙放行对应端口,确保协同能访问到全文检索
  • 3、需要确保协同处于可登录访问状态后,再启动全文检索,否则也会报服务未部署或未启动的错误

1744729423325.png

1744729543216.png

停止方法一: 可以使用S1停止全文检索服务

停止方法二: 可以使用全文检索程序目录Searchservice/shutdown脚本停止

  • Windows系统鼠标右键“以管理员身份运行”shutdown.bat停止,关闭ES程序窗口
  • Linux系统运行 ./shutdown.sh 命令停止
cd 全文检索程序目录Searchservice/startup
./shutdown.sh

专用机启动方法:

  • 先启动ES服务:使用普通用户,执行ES/elasticsearch/bin/目录下的./elasticsearch -d命令

  • 再启动SearchService服务:使用root用户,执行search/searchservice目录下的./startup.sh命令

# 第五步检查全文检索功能

完成全文检索部署(或更新)后,需要发一条测试协同,然后通过全文检索测试是否能检索出数据,如果能检索出数据则说明部署成功。如果不能,则建议参考上一步“一键体检”按钮检查服务配置是否正确:

1762258126392.png

# 其它-单机JVM配置调优

如需调整全文检索服务的内存占用,需要根据实际情况做调整,主要修改SearchService微服务和ElasticSearch搜索引擎两部分的JVM配置:

1、修改SearchService微服务内存: 全文检索程序根目录\config\jvm.properties文件,只修改文件中的-Xms-Xmx参数(数值保持一样),默认-Xms4G -Xmx4G,修改后重新启动全文检索。比如将内存改成8G,就改如下参数即可(其余参数不要动,也不要删):

-Xms8G -Xmx8G

2、修改ElasticSearch搜索引擎内存: ElasticSearch引擎的内存占用单独维护,维护目录位于:Searchservice/ES/elasticsearch/config下的jvm.options,一般需要去掉##注释,显性定制JVM内存:

1764924920526.png

注意:注意ES的堆内存和Searchservice微服务的堆内存总和不能大于当前服务器剩余内存的75%。

附录:全文检索宕机案例 https://open.seeyoncloud.com/#/faq/faq/v1/share?url=Z2JySmU+MjExOQ==

# 其它-单机日志分析

全文检索如出现异常,单机环境下重点分析如下日志:

  • 协同服务器,全文检索日志:ApacheJetspeed\logs_sy\index.log
  • 全文检索服务器,Search微服务日志:\Searchservice\search\searchservice\logs\index.log
  • 全文检索服务器,ES日志:\Searchservice\ES\elasticsearch\logs\elasticsearch.log

# 三、全文检索集群部署配置

# 集群部署前要求

  • 在部署全文检索集群模式前,先进行全文检索单机模式安装部署,确保单机模式全部配置完成,并且新建一条数据在全文检索侧进行检索测试,单机模式功能可用之后再部署集群模式!
  • 如全文检索在Linux下部署,必须参考【Linux操作系统初始准备】章节对所有全文检索服务器参数进行调优,以获得更好的性能。
  • 集群环境至少需要3个节点(奇数)才能实现高可用,准备三台同硬件配置全文检索服务器
  • 集群服务器硬件资源配置可参考【服务器配置参考】章节,每一台服务器取单机2/3的硬件资源

# 集群安装部署步骤

全文检索集群起步三台(奇数),本手册以三台检索服务器为例进行配置:

再次提醒:先确保全文检索单机配通,并且新建的数据在全文检索能查询到结果后,再进行集群复制!

(1)停止原单机全文检索服务,后续将原单机全文检索服务当作集群节点一

(2)将集群节点一全文检索程序1比1复制到节点二、节点三服务器上,路径必须保持一致,然后删除节点二,节点三的/data/Seeyon/Searchservice/ES/base/data/nodes目录。此步操作也可放在第(3)步之后,可减少很多配置。

# 节点二、节点三创建目录
mkdir -p /data/Seeyon

# 节点一使用rsync命令同步文件到节点二、节点三
rsync -av --progress /data/Seeyon/Searchservice root@192.168.94.142:/data/Seeyon/

(3)依次修改集群节点一(原单机)、节点二、节点三的配置,使三个节点形成集群配置:

(3-1)配置每个elasticsearch节点信息:文件路径Searchservice\ES\elasticsearch\config\elasticsearch.yml,原文件内容全部删除,严格按照以下内容修改:

  • cluster.name:自定义全文检索集群的名称,每个节点必须都一致
  • node.name: 自定义节点名称,每个节点的标识,每个节点不能一样
  • network.host: 当前全文检索节点服务器的物理IP
  • discovery.seed_hosts: 集群中每个ES的地址,把所有节点都列出来
  • cluster.initial_master_nodes: 集群的所有node节点名称,把所有节点的node.name都列出来
# 仅***星号部分的内容需要按需修改
# ***集群名称,可改也可不改,所有服务器节点必须保持一致
cluster.name: es-cluster
# 数据目录,不用修改
path.data: ../base/data
# ***节点名称,自定义,每个节点名称要唯一,比如节点一命名node1、节点二命名node2、节点三命名node3
node.name: node1
node.master: true
node.data: true
# ***当前全文检索节点服务器的物理ip
network.host: 192.168.94.138
# http 端口,不用修改
http.port: 9200
# tcp 监听端口,节点间通信用,不用修改
transport.tcp.port: 9300
# ***所有节点的物理IP和tcp监听端口(network.host:transport.tcp.port)全列在这里
discovery.seed_hosts: ["192.168.94.138:9300", "192.168.94.142:9300", "192.168.94.143:9300"]
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5
# ***所有节点的节点名称(node.name)全列在这里
cluster.initial_master_nodes: ["node1", "node2", "node3"]
#action.destructive_requires_name: true
# 以下内容不要改
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.ml.enabled: false

(3-2)配置每个节点的Searchservice\ES\es-bin\es_index.json,修改配置项index.number_of_replicas,如下图:

三个节点配置1,五个节点配置2

1745224245770.png

(3-3)配置每个节点searchservice微服务信息:文件路径Searchservice\search\searchservice\config\application.properties,原文件内容全部删除,严格按照以下内容修改:

  • server.ip:当前全文检索服务器物理IP
  • a8.server.url:协同服务请求地址,如果协同有前置Web负载均衡服务则指向Web负载地址
  • regist.code:全文检索配置中心注册码,注册码获取方式参考本手册单机部署章节
  • es_ips:ES各个节点的ip,全文检索所有节点的IP都列出来
  • es_ports= ES各个节点的http端口,与(3-1)各节点的http.port配置对应,默认是9200
  • es_ports_search= ES各个节点的tcp端口,与(3-1)各节点的transport.tcp.port配置对应,默认是9300
  • cluster.name= ES集群名称,与(3-1)的cluster.name配置对应,要求所有节点保持一致
  • mydict_path= 分词文件路径,新建一个空的共享目录,全文检索所有节点都指向这个共享目录地址,共享目录创建方式参考《协同集群部署手册》共享目录章节
#Tue Dec 17 15:51:42 CST 2019
#Tue Dec 17 15:51:42 CST 2019
##1.微服务配置项 ##

#{text} 服务ID readOnly,不改
server.id=INDEX_SERVICE

#{text} 服务名称 readOnly,不改
server.name=全文检索

#{text} ***全文检索服务器IP,当前节点的物理IP
server.ip=192.168.94.138

#{text} ***A8访问地址,如果协同是集群,要指向负载地址
a8.server.url=http://192.168.94.136/seeyon

#{text} ***全文检索配置中心注册码,注册码获取方式参考本手册单机部署章节
regist.code=77cd6de9-7809-476e-b0de-776ffb8649ca

##2.全文检索配置项##

#{text} 服务上下文路径 readOnly,不改
server.servlet.context-path=/index

#{text} 服务监听端口 readOnly,不改
server.port=9700

#{text} 索引数据目录 readOnly,不改
path_data=../base/data

#{text} ***ES 集群IP地址,默认不开启配置项,集群模式情况下展开 readOnly,所有服务的ES节点IP
es_ips=192.168.94.138,192.168.94.142,192.168.94.143

#{text} ***ES 集群端口,默认 9200 readOnly,所有全文检索节点的端口都列出来
es_ports=9200,9200,9200

#{text} ***ES 集群端口,默认 9300 readOnly,所有全文检索节点的端口都列出来
es_ports_search=9300,9300,9300

#{text} ik分词器热词请求地址白名单,不配置时不做校验 readOnly
#ik_ext_dict.request.hosts=127.0.0.1,127.0.0.1,127.0.0.1

#{text} ***ES 集群名,readOnly,注意与elasticsearch.yml的cluster.name保持一致
cluster.name=es-cluster

#{text} ES 索引别名,searchservice 服务调用时使用,since v8.2 readOnly
index_lib=seeyon_es_alias

#{text} ES 索引实际名称,searchservice 请求 ES 判断是否已升级时使用,since v8.2 readOnly
index_lib_real=seeyon_es_v2

#{text} 检索时完全匹配度,大于 0 的数值,0 表示完全匹配,数值越大,完全匹配度越低 readOnly
search.matchPhrasePrefix.slop=200

#{text} ***自定义分词文件的存储路径,集群情况使用,多节点需要共享该目录 readOnly
mydict_path=/mnt/share/search

# 是否AI同步节点 readOnly,与aiapp联合使用,可见智能应用章节
ai.isSyncNode = false

## 优化配置 ##

# 禁止upload文件解析结果缓存处理 readOnly
file_cache_enable=false

# flink 运行环境并发数 readOnly
core_num=8

# flink 检索历史统计处理并发数 readOnly
flink.source.his.parallelism=8

# flink 索引保存处理并发数 readOnly
#flink.source.parallelism=8

# flink es保存索引并发 readOnly
#flink.sink.parallelism=8

## 以下配置为可选配置,服务中均有默认值,一般情况下无需打开配置 ##

# OA 连接 ActiveMQ 服务器时的超时时间 readOnly
#activemq.connectResponseTimeout=5000

# 指定在连接中缓存的会话数量大小 readOnly
#activemq.sessionCacheSize=5

# 指定在接收消息时的最长等待时间 readOnly
#activemq.receiveTimeout=5000

# activemq 监听端口 readOnly
#activemq.port=16161

# activemq 索引消息队列的未消费最大消息数目 readOnly
#activemq.queueSize.limit=1000

# activemq 索引消息队列未消费消息数目达到或者超过限制后,循环等待的时长 readOnly
#activemq.producer.sleepMilliseconds=5000

# activemq rmi 端口 readOnly
#activemq.rmi.port=1099

# 发送消息的超时时间,用于指定在发送消息时的最长等待时间 readOnly
#activemq.sendTimeout=5000

# OA服务索引重试保存任务开始执行的延时时间 readOnly
#index.redoJob.delay=18000000

# OA服务索引重试保存任务定时执行的周期 readOnly
#index.redoJob.period=18000000

# OA服务 leveldb 失效索引数据删除任务开始执行的延时时间 readOnly
#index.delExpiredJob.delay=0

# OA服务 leveldb 失效索引数据删除任务执行的周期 readOnly
#index.delExpiredJob.period=18000000

# OA服务 leveldb 索引数据的达到失效状态的时长 readOnly
#index.leveldb.expiredDuration=172800000

# OA服务向 BlockingQueue 添加消息时阻塞的最长时间,超过该时间,则放弃添加 readOnly
#index.addBlockingQueue.timeout=7200000

# AI服务 ip port http://x.x.x.x:port / http://x.x.x.x readOnly
ai.server.url = http://x.x.x.x
# 全量同步ssh通道 readOnly
ai.server.ssh.url = http://127.0.0.1:6006
# Ai服务 全量同步方式 0 走AI算法服务,1 走ssh通道 默认走ssh通道
ai.index.sync.mode = 1
# ai服务 全量同步没批条数 readOnly
ai.index.sync.datas.size = 100
#ai服务 全量同步线程数 readOnly
ai.index.sync.thread.size = 2
#ai服务 是否需要重新进行全量同步: 0 不再次进行全量同步,1 重新进行全量同步 readOnly
ai.index.again.sync = 0
# ai服务,从某条数据开始重新开始全量同步 readOnly
ai.index.again.sync.from.id = 0

# 配置成OCR服务的地址。(格式:http://ip:port,端口默认12841)
ai.OCRUrl = http://192.168.0.3:12841

# 集群启停和验证

修改好配置以后,启动进行验证,由于ES开启集群后,不能使用默认的启动脚本进行启动(建议删除安装目录Searchservice\statrtup.sh|statrtup.bat,以免客户误用),开启集群后,启动顺序如下:

1、先启动原有的ES,再启动新加的节点,在Searchservice\ES\elasticsearc目录下启动所有节点的es

  • windows 系统下:
----注意:"$index_home"代表的是当前环境安装的jdk的真实路径,下面需要人为手动替换一下变量值----
.SET "ES_JAVA_HOME=%INDEX_HOME%\jdk"
.\bin\elasticsearch.bat
  • Linux或信创系统下,必须使用普通用户启动,如:es_search
# 修改ES目录属主
chown -R es_search:es_search Searchservice/ES
# 切换普通用户
su - es_search
# 进入ES/elasticsearc/bin目录
cd /data/Seeyon/Searchservice/ES/elasticsearch/bin
# 执行ES启动
----注意:"$index_home"代表的是当前环境安装的jdk的真实路径,下面需要人为手动替换一下变量值----
export "ES_JAVA_HOME=$index_home/jdk"
./elasticsearch -d
# 查看启动日志
tail -f ../logs/es-cluster.log

启动后通过命令 curl -X GET http://192.168.0.202:9201/_cluster/health?pretty查看状态

1731059673867.png

依次启动三个节点,三个节点启动完成后,再执行curl命令,确保number_of_nodes节点数必须是3个才对,status:green表示成功。

如启动不成功,重点排查三个问题:

  • Linux系统需要参考【Linux操作系统初始准备】进行参数调整,否则会遇到无法启动问题
  • Linux系统还需要对普通用户进行目录属主授权,然后切换成普通用户启动,ES不允许root用户启动
  • 关闭防火墙或开通端口白名单,所有全文检索节点间必须确保9200、9300端口互通

全新部署环境如配置无误,启动三个ES无法形成集群(number_of_nodes还是1,status:yellow),则尝试删除各节点的base/data数据,再重新启动。

2、启动全文检索

通过Searchservice/search/searchservice/startup.sh|bat (Linux或信创下使用root用户启动),启动所有searchservice节点,然后测试功能即可。

以上完成后,登录系统管理员-微服务设置-全文检索-基础设置,查看注册节点是否正确

1725951260868.png

# 集群JVM配置调优

1、如需提高全文检索服务的堆内存资源,可修改全文检索程序根目录\config\jvm.properties文件,只修改文件中的-Xms-Xmx参数(数值保持一样),修改后重新启动全文检索。比如将内存改成8G,就改如下参数即可(其余参数不要动,也不要删):

-Xms8G -Xmx8G

注意:

  • 此堆内存修改对searchservice微服务有效
  • 以上堆内存占用不能大于当前服务器总内存的75%。

附录:全文检索宕机案例 https://open.seeyoncloud.com/#/faq/faq/v1/share?url=Z2JySmU+MjExOQ==

2、如需修改elasticsearch的堆内存资源,可修改ES\elasticsearch\config\jvm.options文件,注意ES的堆内存和Searchservice微服务的堆内存总和不能大于当前服务器总内存的75%。

# 集群日志分析

全文检索如出现异常,集群环境下重点分析如下日志:

  • 协同服务器,全文检索日志:ApacheJetspeed\logs_sy\index.log
  • 全文检索服务器每个节点,Search微服务日志:\Searchservice\search\searchservice\logs\index.log
  • 全文检索服务器每个节点,ES日志:\Searchservice\ES\elasticsearch\logs\ES集群名.log(elasticsearch.yml的cluster.name配置,如本手册示例为es-cluster.log)

# 四、全文检索程序更新

协同低版本升级到当前最新版本,全文检索程序需要对应做升级。可以参考本章节操作做历史版本的程序删除和新版本的更新。

1、停止全文检索服务

Linux参考命令:

cd /data/Seeyon/Searchservice/
./shutdown.sh

2、删除注册表:

  • Windows注册表位置 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SEEYON下(仅删除Searchservice)
  • Linux注册表位置 /root/.config/seeyoninstall_Searchservice.info
  • 信创环境一般没有注册表

1762271760272.png

3、删除Searchservice下的文件,但需要保留如下索引和配置:

  • 保留索引数据,通过Searchservice/config/application.properties的path_data查看索引存储位置,默认存放于 Searchservice/ES/base/data
  • 保留配置文件:配置文件位于Searchservice/config/application.properties

4、按照 本手册部署章节 进行全文检索重新部署配置再测试即可。

# 五、历史索引升级工具使用说明

全文检索提供了索引升级工具,如客户是从V8.1SP2及更早版本升级到当前版本,必须使用工具进行索引全面升级,工具位于全文检索程序目录下的 es-upgrade 文件夹。

1744367187076.png

全文检索8.2版本针对检索匹配效果做了优化,如果不需要使用下面图示新特性的情况下,不需要执行本章节索引重建操作:

img

# 索引升级工具-图形升级

第一步,启动运行索引升级升级工具,进入全文检索服务安装目录下的es-upgrade 文件夹下:

  • Windows系统以管理员身份运行startup.bat脚本

  • Linux系统执行 ./startup.sh 命令启动

启动后的界面为升级配置界面,配置说明:

  • ES启动用户名:Linux系统下需要的配置项,Linux系统用户名,默认为es_search,不允许修改。用于启动elasticsearch服务,因为elasticsearch本身的安全机制的限制,不允许直接使用root用户启动。

  • ES启动用户组:Linux系统下需要的配置项,Linux系统用户名所属用户组,默认为es_search,不允许修改。

  • ES路径:指向全文检索程序路径下的ES\elasticsearch目录,Windows示例如D:\Seeyon\Searchservice\ES\elasticsearch,Linux示例如/data/Seeyon/Searchservice/ES/elasticsearch

第二步,索引重建:在完成上一步【环境检测】处理后,进行【下一步】操作,进入当前的索引重建界面,点击【下一步】,开始索引重建处理,直到处理完成:

重建索引完成后,点击【完成】按钮,结束升级程序即可。然后正常进行索引服务的启动即可进行全文检索服务的检索验证和使用。

# 索引升级工具-命令行升级

对于不支持可视化的Linux系统,提供了shell版本的升级脚本 es-upgrade.sh,位于全文检索服务安装根目录下的es-upgrade 目录下。

在登录Linux系统后,进入es-upgrade 目录下,编辑脚本需要的配置文件 es-upgrade.properties,添加或者修改相应的配置项,如下 图,各配置项对应的说明:

  • ES启动用户名:Linux系统下需要的配置项,Linux系统用户名,默认为es_search,不允许修改。用于启动elasticsearch服务,因为elasticsearch本身的安全机制的限制,不允许直接使用root用户启动。

  • ES启动用户组:Linux系统下需要的配置项,Linux系统用户名所属用户组,默认为es_search,不允许修改。

  • ES路径:指向全文检索程序路径下的ES\elasticsearch目录,Windows示例如D:\Seeyon\Searchservice\ES\elasticsearch,Linux示例如/data/Seeyon/Searchservice/ES/elasticsearch

在当前目录下运行 es-upgrade.sh 脚本文件,直到命令行提示索引重建完成,过程中检测到正在运行的elasticsearch服务,提示关闭ES进程,请选择是(y):

img

# 六、常见问题

问题一: 全文检索application.properties中的a8.server.url参数(A8访问地址)配置成https负载后,全文检索微服务无法启动,地址配置成A8单机就可以启动:

查看全文检索index.log日志发现提示 javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

问题原因:A8负载走的https,而这个https是自签证书,不是合格的证书,导致请求不信任。解决方案是:购买带域名的SSL证书。 或者单独给全文检索开一个http的负载访问地址。

[2025-04-22 15:39:42.951] [ERROR] [main] [c.s.c.s.MicroServiceRegister.registerToA8:188] - 注册失败,原因,I/O error on POST request for "https://10.xxx.x.243/seeyon/rest/microservice/regist/INDEX_SERVICE": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://10.xxx.x.243/seeyon/rest/microservice/regist/INDEX_SERVICE": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:746) ~[spring-web-5.2.19.RELEASE.jar:5.2.19.RELEASE]
	at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:672) ~[spring-web-5.2.19.RELEASE.jar:5.2.19.RELEASE]
	at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:416) ~[spring-web-5.2.19.RELEASE.jar:5.2.19.RELEASE]
	at com.seeyon.ctp.service.MicroServiceRegister.registerToA8(MicroServiceRegister.java:156) ~[microservice-common-trunk-SNAPSHOT.jar:trunk-SNAPSHOT]
	at com.seeyon.ctp.service.MicroServiceRegister.start(MicroServiceRegister.java:83) ~[microservice-common-trunk-SNAPSHOT.jar:trunk-SNAPSHOT]
	at com.seeyon.cdp.fulltext.SearchMain.main(SearchMain.java:44) ~[seeyon-fulltext-search-1.0-SNAPSHOT.jar:1.0]
	at com.seeyon.cdp.fulltext.Main.main(Main.java:29) ~[seeyon-microservice-searchservice.jar:1.0]
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[?:1.8.0_312]
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:324) ~[?:1.8.0_312]
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:267) ~[?:1.8.0_312]
编撰人:wujhyf、het、wangyxyf、tenghc