Fess 环境构建备忘录
首先
有一个名为Fess的开源全文搜索服务器。这是我设置并简单使用它时的备忘录。
我将尝试对PDF和Excel文件进行爬取和导入,并进行搜索。
环境
在Windows10的Oracle VirtualBox上搭建在RHEL V7.6上的环境
Elasticsearch V7.2
Fess V13.2
安装/设置。
请根据这些资料进行参考
安装Fess
下载Fess
OpenJDK11 可启动
我們將安裝必須的Java環境。
下載OpenJDK。
解压并安装
[root@test08 /Inst_Image/openJDK]# update-alternatives --install /usr/bin/java java /opt/openjdk/jdk-11/bin/java
[root@test08 /Inst_Image/openJDK]# alternatives --config java
3 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64/jre/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/bin/java)
3 /opt/openjdk/jdk-11/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:3
[root@test08 /Inst_Image/openJDK]# java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
[root@test08 /Inst_Image/openJDK]# java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
Fess 安装
下载并安装RPM软件包。
[root@test08 /Inst_Image/fess]# rpm -ivh fess-13.2.0.rpm
準備しています... ################################# [100%]
Creating fess group... OK
Creating fess user... OK
更新中 / インストール中...
1:fess-13.2.0-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure fess service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable fess.service
### You can start fess service by executing
sudo systemctl start fess.service
安装 Elasticsearch
由于Fess需要在后台存储数据到Elasticsearch中,所以需要安装Elasticsearch。我们将下载并安装rpm包。
[root@test08 /Inst_Image/elastic]# rpm -Uvh elasticsearch-7.2.0-x86_64.rpm
警告: elasticsearch-7.2.0-x86_64.rpm: ヘッダー V4 RSA/SHA512 Signature、鍵 ID d88e42b4: NOKEY
準備しています... ################################# [100%]
更新中 / インストール中...
1:elasticsearch-0:7.2.0-1 警告: /etc/elasticsearch/elasticsearch.yml は /etc/elasticsearch/elasticsearch.yml.rpmnew として作成されました。
################################# [ 50%]
整理中 / 削除中...
2:elasticsearch-0:6.5.3-1 ################################# [100%]
Created elasticsearch keystore in /etc/elasticsearch
我顺便安装了Kibana和Logstash作为一种预防措施(虽然在使用Fess时不需要)。
在Elasticsearch中添加Fess插件
尝试通过网络安装,但无缘无故失败了!
[root@test08 ~]# /usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:7.2.0
Exception in thread "main" java.net.UnknownHostException: repo1.maven.org
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:591)
at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:285)
at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
at java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:265)
at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:372)
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:193)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075)
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:179)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:164)
at org.elasticsearch.plugins.InstallPluginCommand.urlExists(InstallPluginCommand.java:352)
at org.elasticsearch.plugins.InstallPluginCommand.getMavenUrl(InstallPluginCommand.java:332)
at org.elasticsearch.plugins.InstallPluginCommand.download(InstallPluginCommand.java:262)
at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:229)
at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:216)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:77)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.plugins.PluginCli.main(PluginCli.java:47)
似乎有些东西在后台运行着 Maven,但好像无法访问 repo1.maven.org。
[root@test08 ~]# ping repo1.maven.org
ping: repo1.maven.org: 名前またはサービスが不明です
哎呀?Windows (主机OS) 可以ping通的啊?!
我决定单独下载这里的插件。您可以在以下链接下载:
https://fess.codelibs.org/ja/13.2/install/install.html
如果要在离线环境下安装Elasticsearch插件,应该怎么做呢?
请参考https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugin-management-custom-url.html。
请从这里下载所需版本的zip文件
https://repo1.maven.org/maven2/org/codelibs/
逐个安装已下载的插件。
[root@test08 /Inst_Image/fess/es_plugins]# /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///Inst_Image/fess/es_plugins/elasticsearch-analysis-fess-7.2.0.zip
-> Downloading file:///Inst_Image/fess/es_plugins/elasticsearch-analysis-fess-7.2.0.zip
[=================================================] 100%??
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Continue with installation? [y/N]y
-> Installed analysis-fess
他也是一样的。
确认
[root@test08 /usr/share/elasticsearch/plugins]# ls -la
合計 4
drwxr-xr-x. 7 root root 104 7月 16 13:04 .
drwxr-xr-x. 7 root root 128 7月 15 19:33 ..
drwxr-xr-x. 2 root root 194 7月 16 13:03 analysis-extension
drwxr-xr-x. 2 root root 117 7月 16 12:57 analysis-fess
drwxr-xr-x. 2 root root 144 7月 16 13:03 configsync
drwxr-xr-x. 2 root root 4096 7月 16 13:03 dataformat
drwxr-xr-x. 2 root root 132 7月 16 13:04 minhash
更改Elasticsearch的配置
编辑/etc/elasticsearch/elasticsearch.yml并添加以下内容。
configsync.config_path: /var/lib/elasticsearch/config
请编辑 /etc/elasticsearch/jvm.options 文件并增加堆大小。
-Xms2g
-Xmx2g
修改FESS设定
编辑/usr/share/fess/bin/fess.in.sh文件
取消以下注释以启用
ES_HTTP_URL=http://localhost:9200
FESS_DICTIONARY_PATH=/var/lib/elasticsearch/config/
请编辑/etc/fess/fess_config.properties文件。
# Elasticsearch
elasticsearch.http.url=http://localhost:9200
elasticsearch.cluster.name=elasticsearch
...
-Xmx2g\n\
...
crawler.metadata.name.mapping=
...
爬虫.metadata.name.mapping是针对PDF文件链接显示异常的问题进行的解决方案。
参考:
将doc.content_title替换为doc.filename#1235
无法检索到的文件
-Xmx2g 是 Fess 的堆设置(默认为 512m,根据需要进行调整)
参考:与系统相关的设置
编辑/etc/sysconfig/fess。这里是爬虫的堆设置。
FESS_HEAP_SIZE=2g
RHEL的防火墙设置
我会打开以下的端口。
Fess: 8080
Elasticsearch: 9200
Kibana: 5601 (虽然在使用Fess时不需要,但还是留着吧)
示例命令(其他端口类似)。
[root@test08 /etc/firewalld/zones]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
[root@test08 /etc/firewalld/zones]# firewall-cmd --reload
success
为了确认,请确保将更改结果反映到以下文件中。
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<port protocol="tcp" port="9200"/>
<port protocol="tcp" port="5601"/>
<port protocol="tcp" port="8080"/>
</zone>
补充设置
爬行文件大小限制
似乎需要编辑/usr/share/fess/app/WEB-INF/classes/crawler/contentlength.xml文件。默认设置为10M,并且根据文件类型设定了上限,因此需要根据需求进行适当的修改。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//DBFLUTE//DTD LastaDi 1.0//EN"
"http://dbflute.org/meta/lastadi10.dtd">
<components namespace="fessCrawler">
<include path="crawler/container.xml" />
<component name="contentLengthHelper"
class="org.codelibs.fess.crawler.helper.ContentLengthHelper" instance="singleton">
<property name="defaultMaxLength">104857600</property><!-- 10M -->
<postConstruct name="addMaxLength">
<arg>"text/html"</arg>
<arg>2621440</arg><!-- 2.5M -->
</postConstruct>
</component>
</components>
参考:爬虫相关的设置。
开始
在中国,您可以使用systemctl命令来控制Elasticsearch和Fess。
[root@test08 /etc/sysconfig]# systemctl start elasticsearch.service
[root@test08 /etc/sysconfig]# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
Active: active (running) since 金 2019-09-06 15:19:55 JST; 7s ago
Docs: http://www.elastic.co
Main PID: 5865 (java)
Tasks: 27
CGroup: /system.slice/elasticsearch.service
tq5865 /usr/share/elasticsearch/jdk/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupanc...
mq5968 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
9月 06 15:19:55 test08 systemd[1]: Started Elasticsearch.
9月 06 15:19:55 test08 systemd[1]: Starting Elasticsearch...
9月 06 15:19:57 test08 elasticsearch[5865]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was depr...ease.
Hint: Some lines were ellipsized, use -l to show in full.
[root@test08 /etc/sysconfig]# systemctl start fess.service
[root@test08 /etc/sysconfig]# systemctl status fess.service
● fess.service - Fess
Loaded: loaded (/usr/lib/systemd/system/fess.service; disabled; vendor preset: disabled)
Active: active (running) since 金 2019-09-06 15:20:20 JST; 11s ago
Docs: http://fess.codelibs.org/
Main PID: 6125 (java)
Tasks: 31
CGroup: /system.slice/fess.service
mq6125 /bin/java -Xms2g -Xmx2g -Djava.awt.headless=true -Dhttp.maxConnections=20 -Djna.nosys=true -Djdk.io.p...
9月 06 15:20:20 test08 systemd[1]: Started Fess.
9月 06 15:20:20 test08 systemd[1]: Starting Fess...
管理控制台
访问 http://xxx:8080/admin
文件的爬行设置
将主机操作系统上的文件系统挂载到名为/oneWexDemo01的目录作为挂载点,并将要爬取的文件放置在其下面。
然后,将/oneWexDemo01设置为要爬取的目录。
根据cron设置,可以指定爬虫运行的时间。
自动设置删除爬取数据
在FESS管理页面中,通过系统-全般菜单的爬虫栏,将抓取的数据默认情况下会在3天后被删除。
将”删除旧文档: 3天 (默认)”修改为”-1″,即可停止自动删除。
尝试搜索
点击链接后,您当然可以通过浏览器获取到该文件。如果是PDF文件,会直接在浏览器中打开;如果是Excel或者Word文件,可以通过浏览器下载,并且可以在各自的工具中打开。非常棒!
这种搜索界面提供的默认选项,而且速度很快,真是太棒了。
补充
搜索日志
使用了搜索关键词,以及尝试搜索但结果为0条的内容,还有实际被点击的搜索结果等等,都会被记录在非常有用的日志中。太棒了!
字典
似乎可以对各种字典进行设置。
参考:字典
形態素解析常使用「kuromoji」进行,因此可以自定义词典或设置同义词等。
结束
Fess提供了“仅需5分钟简单构建”的宣称,确实能够快速而轻松地构建,并且还为我们提供了一个非常方便的搜索应用。
虽然实际上并不能在5分钟内完成构建,但据说还有Docker版等更简单的选择。
作为一个OSS项目,有很多相关信息可供参考,而且使用Elasticsearch作为数据存储,如果再加上Kibana,便可以更方便地查看导入的数据,非常适合进行各种调研工作。
真是太棒了,能够免费使用如此方便的全文搜索服务器(当然也有付费服务可获得官方支持)。
Note: This is a paraphrased translation provided by AI, please refer to it as a language reference only.