publiccms默认使用lucene做全文索引,在集群环境下部署通常会有索引文件读写冲突的情况,集群环境下部署PublicCMS,推荐使用elasticsearch做全文索引.使用HibernateSearch作为搜索引擎驱动,可以用最小的代价迁移搜索引擎底层实现.

    lucene-backend.pngelasticsearch-backend.png

    PublicCMS产品将不断跟进框架的升级,因此不同版本之间配置可能存在差异. 不同版本需要es或opensearch版本对应关系查看https://www.publiccms.com/guide/628.html

将lucene改为elasticsearch或opensearch也比较简单只需要修改配置文件cms.properties,启用以下配置

cms.tokenizerFactory=standard #或其他elasticsearch已安装的分词器比如ik_smart(安装方法bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.10.0

并将原来的config/hibernate.properties中backend lucene部分注释掉

##backend lucene
#hibernate.search.backend.analysis.configurer=com.publiccms.common.search.CmsLuceneAnalysisConfigurer
#hibernate.search.backend.type=lucene
#hibernate.search.backend.lucene_version=LATEST
##backend elasticsearch
hibernate.search.backend.analysis.configurer=com.publiccms.common.search.CmsElasticsearchAnalysisConfigurer
hibernate.search.backend.type=elasticsearch
hibernate.search.backend.uris=http://localhost:9200,http://localhost:9201
hibernate.search.backend.schema_management.minimal_required_status=yellow
hibernate.search.backend.schema_management.minimal_required_status_wait_timeout=10000
hibernate.search.backend.username=elastic
hibernate.search.backend.password=password

系统已经在config/hibernate.properties提供了一些默认的配置和建议的配置项,你也可以修改这些配置项以适应你自己的环境,其中

配置项默认值含义

hibernate.search.backend.uris

http://localhost:9200elasticsearch服务地址,多个服务地址可以空格隔开
hibernate.search.backend.schema_management.minimal_required_statusyellowelasticsearch最低级别,通常单节点部署只能达到yellow

hibernate.search.backend.username


elasticsearch的用户名
hibernate.search.backend.password
elasticsearch的密码

 V4.0.202302及以前版本需要,其elasticsearch版本应该是5.6-7.10之间

1.修改配置文件cms.properties,启用以下配置,并将原来的cms.hibernate.configFilePath注释掉

cms.tokenizerFactory=standard #或其他elasticsearch已安装的分词器
cms.hibernate.configFilePath=config/hibernate-elasticsearch.properties

 V4.0.202011及以前的版本使用的是HibernateSearch5,其elasticsearch版本应该是2.0-5.6之间

将lucene改为elasticsearch需要以下两步:

    1. 修改配置文件cms.properties,启用以下配置,并将原来的cms.hibernate.configFilePath注释掉

cms.hibernate.configFilePath=config/hibernate-elasticsearch.properties

    2. 还需要修改com.publiccms.entities.cms.CmsContent类,启用以下注解,并将原来的@Analyzer(definition = "cms")注解注释掉

@Analyzer(definition = "default")

更多其他参数还可以参考hibernatesearch集成elasticsearch的文档 https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#elasticsearch-integration

标签:elasticsearch,l

0条评论
发表评论