# 1全文检索服务集群
北京致远互联软件股份有限公司 2024年7月
# 1.1概要说明
如果是首次使用全文检索,首先正常部署单机全文检索,正常配置,并且测试能够正常使用(新发协同能够检索到),如果是已有全文检索则保证现有节点功能正常,新发数据能正常检索;
ES部署前系统配置调整:
- 调整最大文件描述符和最大进程数限制:
vim /etc/security/limits.conf
es_search - nofile 65535
es_search - nproc 4096
- 禁用swap
swapoff -a
- 调整可创建的最大虚拟内存区域的数量
vim /etc/sysctl.conf
vm.max_map_count=262144
# 1.2配置(至少3个节点才能满足高可用)
第一步:停止全文检索服务后,复制一份现有全文检索作为集群节点二。 注意:
- 复制时注意全文检索已经停止
- 启动前,保证全文检索目录下Searchservice/ES/base数据一致,否则可能导致集群创建失败
**第二步:**需修改每个节点配置如下: Searchservice\ES\elasticsearch\config\elasticsearch.yml 见模板:
#节点 1 的配置信息:
#集群名称,节点之间要保持一致
cluster.name: es-cluster
path.data: ../base/data
#节点名称,集群内要唯一
node.name: node1
node.master: true
node.data: true
#ip 地址
network.host: 192.168.0.202
#http 端口
http.port: 9201
#tcp 监听端口
transport.tcp.port: 9301
discovery.seed_hosts: ["192.168.0.202:9301", "192.168.0.202:9302", "192.168.0.202:9303"]
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5
#集群内的可以被选为主节点的节点列表
cluster.initial_master_nodes: ["node1", "node2", "node3"]
#跨域配置
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.ml.enabled: false
参数说明(其余未说明的无需修改,参照上面配置模板):
- cluster.name: 填写集群的名称,需要与config/application.properties 中保持一致
- node.name: 节点名称,每一个节点名称不能一样,例如,节点1填写:node-1001,节点3填写:node-1002
- network.host: 当前节点所在服务器ip
- discovery.seed_hosts: 集群中每个ES的地址
- cluster.initial_master_nodes: 集群的所有node
**第三步:**修改Searchservice\search\searchservice\config\application.properties 中下列配置项 模板:
#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
server.ip=10.3.11.47
#{text} A8访问地址
a8.server.url=http://10.3.11.47/seeyon
#{text} 全文检索配置中心注册码
regist.code=7d3b6f33-1063-4f26-a17e-f82bd03be411
##2.全文检索配置项##
#{text} 服务上下文路径 readOnly
server.servlet.context-path=/index
#{text} 服务监听端口 readOnly
server.port=9700
#{text} 索引数据目录 readOnly
path_data=../base/data
#{text} ES 集群IP地址,默认不开启配置项,集群模式情况下展开 readOnly
es_ips=192.168.0.202,192.168.0.202,192.168.0.202
#{text} ES 集群端口,默认 9200 readOnly
es_ports=9201,9202,9203
#{text} ES 集群端口,默认 9300 readOnly
es_ports_search=9301,9302,9303
#{text} ik分词器热词请求地址白名单,不配置时不做校验 readOnly
#ik_ext_dict.request.hosts=127.0.0.1,127.0.0.1,127.0.0.1
#{text} ES 集群名,默认 elasticsearch readOnly
cluster.name=my-elasticsearch
#{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
## 优化配置 ##
# 禁止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
#{text} 自定义分词文件的存储路径,集群情况使用,多节点需要共享该目录 readOnly
mydict_path=D:/1seeyonApp/v90_425/Seeyon/mydic
# 是否AI同步节点 readOnly
ai.isSyncNode = false
**参数说明(**其余参数配置参照实施手册): 以下四个配置与ES配置文件内保持一致:Searchservice\ES\elasticsearch\config\elasticsearch.yml
- es_ips= ES各个节点的ip
- es_ports= ES各个节点的端口
- es_ports_search= ES各个节点的端口
- cluster.name= ES集群名称
- 以下两个配置需要新增:
- mydict_path= 分词文件路径,多个节点需要共享同一个目录
- ai.isSyncNode = 全文检索多个节点中,只有一个节点的该配置项配置未true,其余节点均配置false。
修改好配置以后,启动进行验证,由于ES开启集群后,不能使用默认的启动脚本进行启动,开启集群后,启动顺序如下: 1、先启动原有的ES,再启动新加的节点,在Searchservice\ES\elasticsearc目录下启动所有节点的es
- windows 系统下:
.\bin\elasticsearch.bat
Linux 系统下(非root用户下启动)
./bin/elasticsearch -d
启动后通过命令 curl —X GET http://192.168.0.202:9201/_cluster/health?pretty
查看状态
节点数必须是3个才对,status:green
2、启动全文检索 通过Searchservice\search\searchservice\ startup.bat(startup.sh),启动所有searchservice节点,然后测试功能即可。 登录系统管理员-微服务设置-全文检索-基础设置,查看注册节点是否正确