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

image.png
image.png

文件的爬行设置

将主机操作系统上的文件系统挂载到名为/oneWexDemo01的目录作为挂载点,并将要爬取的文件放置在其下面。
然后,将/oneWexDemo01设置为要爬取的目录。

image.png
image.png

根据cron设置,可以指定爬虫运行的时间。

自动设置删除爬取数据

在FESS管理页面中,通过系统-全般菜单的爬虫栏,将抓取的数据默认情况下会在3天后被删除。
将”删除旧文档: 3天 (默认)”修改为”-1″,即可停止自动删除。

image.png

尝试搜索

image.png
image.png

点击链接后,您当然可以通过浏览器获取到该文件。如果是PDF文件,会直接在浏览器中打开;如果是Excel或者Word文件,可以通过浏览器下载,并且可以在各自的工具中打开。非常棒!

image.png
image.png

这种搜索界面提供的默认选项,而且速度很快,真是太棒了。

补充

搜索日志

image.png
image.png

使用了搜索关键词,以及尝试搜索但结果为0条的内容,还有实际被点击的搜索结果等等,都会被记录在非常有用的日志中。太棒了!

字典

似乎可以对各种字典进行设置。

image.png

参考:字典

形態素解析常使用「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.

广告
将在 10 秒后关闭
bannerAds